Funciones Lambda
Explicación de las funciones lambda, su sintaxis, sus características y sus usos.
ANTECEDENTES
Como ya hemos visto en el tema anterior, son funciones que tienen como argumento una función o incluso devuelven una función.
Funciones como variable
Por otra parte, también podemos guardar funciones como variables en Kotlin aprovechándonos de los datos de tipo Función que implementa su gramática.
El bloque de código anterior es completamente válido y además nos permite cambiar el bloque de código que se ejecuta, por ejemplo, en cada iteración.
DEFINICIÓN
En base a lo visto anteriormente, podemos definir el concepto de función lambda como:
Una función lambda es un literal de función que puede ser usado como expresión. Esto quiere decir, una función que no está ligada a un identificador y que puedes usar como valor.
O, en otras palabras, una función anónima que utilizamos como valor de entrada en una función de orden superior.
SINTÁXIS
Continuando con la función suma, podemos escribirla así:
Para transformarla al formato lambda tenemos que hacerla anónima.
La sintaxis de un literal de lambda va escrita entre llaves {...}
y su contenido es el siguiente:
Lista de parámetros — Cada parámetro es una declaración de variable, aunque esta lista es opcional
Operador de flecha
->
— Se omite si no usas lista de parámetrosCuerpo del lambda — Son las sentencias que van luego del operador de flecha
Función lambda con cuerpo
Las funciones lambda tienen que devolver un valor, eso es indispensable. Sin embargo, el cuerpo de una función lambda puede tener varias sentencias:
IDENTIFICADOR IT
Cuando tu lambda usa un único argumento y no piensas cambiar su nombre por cuestiones de legibilidad, puedes usar el identificador it
.
Esta variable se deduce implícitamente con el tipo inferido por el compilador y puedes referirte a ella como tu parámetro.
Vamos a mostrar un caso de uso con todo lo que hemos visto anteriormente:
En el caso del tipo Array, el argumento que coge la lambda es el iterador. Por tanto, it será el número de iteración.
ACCESO A VARIABLES EXTERNAS
Las lambdas pueden acceder a variables que se hayan inicializado fuera del código de la lambda:
EJEMPLOS DE APLICACIÓN
Las lambdas tienen un caso de uso claro con las funciones de orden superior como lo que vamos a ver a continuación:
Omitir el paréntesis
Sin embargo, las lambdas por definición se pueden poner fuera de los paréntesis lo que hace el código más legible:
Ejemplo por partes
Ejemplo básico
Ejemplo omitiendo los paréntesis
Ejemplo omitiendo el tipo de dato
Ejemplo del identificador it
En el ejemplo anterior lo que hemos hecho ha sido renombrar el argumento como char. Eso se puede omitir tambien.
Last updated