domingo, octubre 31, 2010

Introduccion a LINQ Parte 3.4 (Arquitectura)

Artículos relacionados

Parte 1, Parte 2, Parte 3.1, Parte 3.2, Parte 3.3

En esta oportunidad hablaremos sobre las Expresiones Lambda en C# y VB.

Podemos decir que las expresiones lamba son le evolución natural de los métodos anónimos incluidos en C# 2.0. Esto nos permite utilizar una sintaxis mas compacta al momento de escribir nuestro código. Veamos un par definiciones del sitio de Microsoft:

"Una expresión lambda es una función anónima que puede contener expresiones e instrucciones y se puede utilizar para crear delegados o tipos de árboles de expresión"

"Una expresión lambda es una función sin nombre que calcula y devuelve un solo valor. Se pueden utilizar las expresiones lambda dondequiera que un tipo de delegado sea válido"

Creo que la forma mas sencilla de entender este concepto es mediante un ejemplo que muestre la evolución de los cambios en la sintaxis de los lenguajes hasta llegar a las expresiones lambda.

C#

image

VB

image

En el código anterior podemos ver la definición de un delegado que recibe un tipo Int, Integer y retorna un tipo bool, Boolean, esto servirá para poder sustituir cualquier función que tenga esa firma en el procedimiento Mostrar Números. Y definimos dos funciones una que indica si un numero es par y la otra si es mayor a 5. Ahora veamos como se invocaría dicho método usando los delegados. (C# 1.0 y VB 7.0)

C#

image

VB

image

Recientemente se introdujo el concepto de funciones anónimas, que permiten eliminar la necesidad de definir el delegado especifico y en su lugar usar un delegado genérico. ( esto  se puede aplicar en  ambos lenguajes). Ejemplo:

C#

image

VB

image

En C# 2.0 se introdujo el concepto de métodos anónimos como un medio de escribir bloques de instrucciones insertados sin nombre que se pueden ejecutar en una invocación de delegado (no se necesita definir previamente el delegado). Ejemplo:

C#

image

Finalmente esto se puede escribir utilizando expresiones lambda de la siguiente forma:

C#

image

VB

image  

Como pueden ver las expresiónes lamda permiten una sintaxis mas compacta y pueden contener instrucciones como en el ejemplo anterior o expresiones, de aquí surge el concepto de arboles de expresión que tocaremos en la siguiente entrega y veremos como se aplican todos los conceptos que hemos visto en las consultas LINQ.

Pueden descargar el código fuente aquí.

Hasta la proxima.

No hay comentarios.:

Publicar un comentario