En este tutorial verás el uso de funciones anónimas en Kotlin como alternativa para pasar funciones como parámetros.
Funciones Anónimas
Las funciones anónimas son literales de función, al igual que las funciones lambda, que te permiten tratarlas como valores con el fin de representar tipos función.
Su objetivo es permitirte pasar bloques de código a funciones de orden superior pero con la capacidad de retornar localmente su resultado.
Al declarar una función anónima ten en cuenta las siguientes características:
- No se les define nombre
- No pueden ser genéricas
- No pueden tener argumentos por defecto
- Pueden omitir el tipo para los parámetros y el retorno si es posible inferirlos por el contexto
- La expresión
return
en su interior retornará al final de ella misma, no de la función que la cubre - Es posible declarar una función anónima de extensión
La declaración al igual que las funciones nombradas, llevan la palabra fun
junto a toda la cabecera y luego sigue el bloque de código correspondiente. Por ejemplo:
numbers.filter(
fun(number): Boolean {
return number > 5
}
)
Ejemplo De Funciones Anónimas
Considera una lista de números enteros llamada numbers, para la cual deseamos contar la cantidad de apariciones del número 2.
Una de las formas de contar las apariciones es el uso de la función de la librería estándar count()
, la cual recibe un tipo función que puede ser expresado por una función anónima o lambda.
fun main() {
val numbers = listOf(2, 5, 2, 6, 4)
val result = numbers.count(fun(number): Boolean {
return number == 2
})
print(result) // 2
}
La función anónima anterior es pasada a la función count()
, ya que esta recibe un tipo función T -> Boolean
. Donde T
recibe el argumento de tipo Int
, ya que numbers
es una lista de enteros.
count
cuenta la cantidad de apariciones que satisfagan al predicado, en este caso se usa la expresión return
para retornar el resultado de la operación de comparación entre el parámetro number
y el literal entero 2
.
fun(number): Boolean {
return number == 2
}
De esta forma la función internamente ejecuta a la función anónima para llevar la cuenta de la cantidad de veces que la condición es verdadera. Es decir, 2 apariciones del número 2 en la lista.