Expresión de función
Actualización: noviembre 2007
Declara los parámetros y el código que definen una expresión lambda.
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
expression
Partes
parameterlist
Opcional. Lista de nombres de variable local que representan los parámetros de este procedimiento. Los paréntesis deben estar presentes aunque la lista esté vacía. Visite Lista de parámetros.expression
Necesaria. Una expresión única. El valor de la expresión determina el tipo de la función y el valor que se devuelve cuando se llama a la función.
Comentarios
Una expresión lambda es una función sin nombre que calcula y devuelve un solo valor. Puede utilizar una expresión lambda en cualquier lugar donde puede utilizar un tipo de delegado, excepto como argumento de RemoveHandler. Para obtener más información sobre los delegados y el uso de expresiones lambda con delegados, vea Delegate (Instrucción) y Conversión de delegado flexible.
Sintaxis de la expresión lambda
La sintaxis de una expresión lambda se parece a la de una función estándar. Las diferencias son las siguientes:
Una expresión lambda no tiene nombre.
Las expresiones lambda no pueden tener modificadores, como Overloads u Overrides.
Las expresiones lambda no utilizan una cláusula As para designar el tipo de valor devuelto de la función. En su lugar, el tipo se deduce del valor en el que se evalúa el cuerpo de la expresión lambda. Por ejemplo, si el cuerpo de la expresión lambda es Where cust.City = "London", su tipo de valor devuelto es Boolean.
El cuerpo de la función debe ser una expresión, no una instrucción. El cuerpo puede estar formado por una llamada a un procedimiento de función, pero no una llamada a un subprocedimiento.
No hay ninguna instrucción Return. El valor devuelto por la función es el valor de la expresión del cuerpo de la función.
No hay ninguna instrucción End Function.
Todos los parámetros deben de tener tipos de datos especificados o se deben deducir.
No se permite los parámetros Optional y ParamArray.
No se permiten los parámetros Generic.
Como resultado de estas restricciones y de las maneras en las que se utilizan las expresiones lambda, éstas suelen ser cortas y sencillas.
Ejemplo
En los ejemplos siguientes se muestran dos maneras de crear expresiones lambda simples. El primero utiliza Dim para proporcionar un nombre para la función. Para llamar a la función, envíe un valor al parámetro.
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
O bien, puede declarar y ejecutar la función al mismo tiempo.
Console.WriteLine((Function(num As Integer) num + 1)(5))
Las expresiones lambda están debajo de muchos de los operadores de consulta de Language-Integrated Query (LINQ) y se pueden utilizar explícitamente en consultas basadas en método. En el ejemplo siguiente se muestra una consulta LINQ típica, seguida por la traducción de la consulta al formato de método.
Dim londonCusts = From cust In db.Customers
Where cust.City = "London"
Select cust
' This query is compiled to the following code:
Dim londonCusts = db.Customers _
.Where(Function(cust) cust.City = "London") _
.Select(Function(cust) cust)
Para obtener más información sobre métodos de consulta, vea Consultas (Visual Basic). Para obtener más información sobre los operadores de consulta estándar, vea Información general sobre operadores de consulta estándar.
Vea también
Conceptos
Operadores y expresiones en Visual Basic
Información general sobre las instrucciones
Conversión de delegado flexible