Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
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 .