¿Qué es una expresión lambda?
Según el msdn es una función anónima que puede contener expresiones e instrucciones y se puede utilizar para crear delegados o árboles de expresiones.
Investigando un poco más encontramos que las expresiones lambda son la apuesta de C# por la programación funcional y están basados en LISP y sus dialectos como Scheme.
Desde mi particular punto de vista (y supongo que desde el que las haya utilizado) me parecen una herramienta por demás poderosa y sencilla ya que no solo son una forma de implementar métodos anónimos sino que tienen la responsabilidad de ejecutar las consultas en LINQ (en algunos casos como métodos anónimos y en otros como poderosos árboles de expresiones).
¿Y qué tan sencillas de utilizar son?
Yo diría que bastante, las utilizaba sin saber que eran :).
El operador de lambda “=>” se lee “va a”. Está compuesto por tres partes la parte de la izquierda son los parámetros de entrada si es que son necesarios seguida por el operador lambda “=>” y por último en la parte derecha tiene lugar la expresión o el conjunto de sentencias necesarias para cumplir una funcionalidad.
Una de las principales características de las expresiones lambda (dejando de lado un poco C#) es que pueden ser tratadas tanto como piezas de código que pueden ser invocadas (delegados) o como valores que pueden ser manipulados por otros bloques de código (meta-programación).
En esta ocasión veremos su uso como métodos anónimos e iniciaremos como siempre con un ejemplo sencillo.
|
|
¡Algo raro ha pasado aquí! ¿Y los tipos en la expresión lambda ? ¿Y la palabra reservada return?
Se trata de otra más de las características de las expresiones lambda la “inferencia de tipos”. La “inferencia de tipos” es llevada a cabo por el compilador en base al cuerpo de la expresión lambda, el tipo de delegado subyacente y otros factores descritos en la especificación de lenguaje de C#. (Lo anterior resulta de especial utilidad cuando las utilizamos en LINQ).
Usos
- Pueden ser utilizados como Métodos anónimos.
- Árboles de expresiones.
Restricciones
- En su uso como árboles de expresiones una vez creados son inmutables.
- No aceptan parámetros out.
A diferencia de los métodos anónimos las expresiones lambda si aceptan parámetros ref veamos un ejemplo.
|
|
Para ambos ejemplos se obtendría el siguiente resultado:
Sin mas por el momento me despido de ustedes no sin antes pedirles sus comentarios y que me cuenten sus experiencias con las expresiones Lambda. Saludos.