Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación funcional / Lambdas y clausuras
Lambdas
Una lambda es una función sin nombre. Ya has conocido dos
formas de escribir una. La primera es el bloque con
flecha, que enumera sus parámetros tras la flecha
->:
my &square = -> $x { $x * $x };
say square(7); # 49La segunda es la forma Whatever, donde un
* ocupa el lugar del argumento y la expresión que lo rodea
se convierte en una función de un argumento:
my &square = * ** 2;
say square(7); # 49Ambas crean la misma clase de cosa: un fragmento de código que puedes guardar, pasar y llamar. Las lambdas brillan como argumentos de las funciones de orden superior, donde ponerles nombre solo estorbaría:
say (1..5).map(-> $n { $n * $n }); # (1 4 9 16 25)
say (1..5).map(* ** 2); # (1 4 9 16 25)La forma con flecha es más clara cuando el cuerpo es más largo o recibe varios parámetros; la forma Whatever es maravillosamente breve para expresiones sencillas. Son dos grafías de la misma idea: una función sin nombre.
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Lambdas y clausuras | Quiz — Lambdas →
💪 O ve directamente a los ejercicios de esta
sección.