Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La fun palabra clave se usa para definir una expresión lambda, es decir, una función anónima.
Sintaxis
fun parameter-list -> expression
O usando la _.Property notación abreviada:
_.
fun, se omiten la lista de parámetros y la flecha lambda (->) y _. es una parte de la expresión donde _ reemplaza el símbolo de parámetro.
Los fragmentos de código siguientes son equivalentes:
(fun x -> x.Property)
_.Property
Observaciones
La lista de parámetros normalmente consta de nombres y, opcionalmente, tipos de parámetros. Por lo general, la lista de parámetros se puede componer de cualquier patrón de F#. Para obtener una lista completa de posibles patrones, consulte Coincidencia de patrones. Las listas de parámetros válidos incluyen los ejemplos siguientes.
// Lambda expressions with parameter lists.
fun a b c -> ...
fun (a: int) b c -> ...
fun (a : int) (b : string) (c:float) -> ...
// A lambda expression with a tuple pattern.
fun (a, b) -> …
// A lambda expression with a cons pattern.
// (note that this will generate an incomplete pattern match warning)
fun (head :: tail) -> …
// A lambda expression with a list pattern.
// (note that this will generate an incomplete pattern match warning)
fun [_; rest] -> …
La expresión es el cuerpo de la función, la última expresión de la que genera un valor devuelto. Entre los ejemplos de expresiones lambda válidas se incluyen los siguientes:
fun x -> x + 1
fun a b c -> printfn "%A %A %A" a b c
fun (a: int) (b: int) (c: int) -> a + b * c
fun x y -> let swap (a, b) = (b, a) in swap (x, y)
Uso de expresiones lambda
Las expresiones lambda son especialmente útiles cuando desea realizar operaciones en una lista u otra colección y desea evitar el trabajo adicional de definir una función. Muchas funciones de biblioteca de F# toman valores de función como argumentos y puede ser especialmente conveniente usar una expresión lambda en esos casos. El código siguiente aplica una expresión lambda a los elementos de una lista. En este caso, la función anónima comprueba si un elemento es texto que termina con caracteres especificados.
let fullNotation = [ "a"; "ab"; "abc" ] |> List.find ( fun text -> text.EndsWith("c") )
printfn "%A" fullNotation // Output: "abc"
let shorthandNotation = [ "a"; "ab"; "abc" ] |> List.find ( _.EndsWith("b") )
printfn "%A" shorthandNotation // Output: "ab"
El fragmento de código anterior muestra ambas notaciones: mediante la fun palabra clave y la notación abreviada _.Property .