Tracks
/
Elixir
Elixir
/
Temario
/
Funciones anónimas
Fu

Funciones anónimas en Elixir

4 ejercicios

Acerca de Funciones anónimas

Las funciones anónimas se usan mucho en todo Elixir por sí solas, como valores de retorno y como argumentos en funciones de orden superior como Enum.map/2:

Enum.map([1, 2, 3], fn n -> n + 1 end)
# => [2, 3, 4]

En Elixir, las funciones se tratan como ciudadanos de primera clase:

  • Las funciones con nombre y las anónimas se pueden asignar a variables.
  • Las funciones con nombre y las anónimas se pueden pasar de un lado a otro como si fueran datos, ya sea como argumentos o como valores de retorno.
  • Las funciones anónimas se pueden crear de forma dinámica.

Las funciones anónimas se crean con la palabra clave fn y se invocan con un punto (.):

function_variable = fn n -> n + 1 end

function_variable.(1)
# => 2

Las funciones anónimas también se pueden crear con la forma abreviada de captura &.

  • El & inicial marca el inicio de la expresión de captura.

  • &1, &2 y así sucesivamente se refieren a los argumentos posicionales de la función anónima.

    # Instead of:
    fn x, y -> abs(x) + abs(y) end
    
    # We can write:
    &(abs(&1) + abs(&2))
    
  • El operador de captura & también se puede usar para capturar una función con nombre existente:

    # Instead of:
    fn a, b -> a <= b end
    
    # We can capture the function using its name and arity:
    &<=/2
    

Las funciones anónimas en Elixir son clausuras. Pueden acceder a las variables que están en el ámbito cuando se define la función. Las variables asignadas dentro de una función anónima no son accesibles fuera de ella:

y = 2

square = fn ->
  x = 3
  x * y
end

square.()
# => 6

x
# => ** (CompileError): undefined function x/0
Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Funciones anónimas

La práctica está bloqueada

Desbloquea 1 ejercicio más para practicar Funciones anónimas