Funciones Anónimas En Kotlin

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.

Únete Al Discord De Develou

Si tienes problemas con el código de este tutorial, preguntas, recomendaciones o solo deseas discutir sobre desarrollo Android conmigo y otros desarrolladores, únete a la comunidad de Discord de Develou y siéntete libre de participar como gustes. ¡Te espero!