0Pricing
Kotlin Academy · Lección

Pasar lambdas a funciones

Pase lambdas como argumentos y use la sintaxis de lambda final.

Pasar lambdas a funciones es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.

Funciones que aceptan lambdas

Una función de orden superior es aquella que recibe una función (como una lambda) como parámetro. Así es como funcionan map, filter y forEach.

Declarar una función de orden superior

Use un tipo de función como tipo del parámetro.
fun applyTwice(n: Int, op: (Int) -> Int): Int {
    return op(op(n))
}
println(applyTwice(3, { it * 2 }))  // 12

Sintaxis de lambda final

Si el último parámetro es una función, puede mover la lambda fuera de los paréntesis. Esta es la sintaxis de lambda final.
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))

// Standard:
applyTwice(3, { it * 2 })
// Trailing lambda:
applyTwice(3) { it * 2 }

Lambda final sin paréntesis

Cuando la lambda es el ÚNICO argumento, puede omitir los paréntesis por completo.
fun execute(block: () -> Unit) = block()

// With parens:
execute({ println("Hello") })
// Without parens (idiomatic):
execute { println("Hello") }

Pasar una variable lambda

Puede pasar una referencia a una lambda almacenada usando el nombre de su variable.
val double = { n: Int -> n * 2 }
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))
println(applyTwice(5, double))  // 20

Referencias a funciones con ::

Use :: para pasar una función con nombre como argumento compatible con lambdas.
fun triple(n: Int) = n * 3
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))
println(applyTwice(2, ::triple))  // 18

Varios parámetros lambda

Una función puede aceptar varios parámetros lambda. Solo el último puede usar la sintaxis de lambda final.
fun transform(
    value: Int,
    before: (Int) -> Int,
    after: (Int) -> Int
) = after(before(value))

println(transform(5, { it * 2 }, { it + 1 }))  // 11

Pasar una lambda a filter

filter acepta una lambda predicado: una función que transforma un elemento en Boolean.
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evens = numbers.filter { it % 2 == 0 }
println(evens)  // [2, 4, 6]

Encadenar funciones de orden superior

Encadene varias llamadas a funciones de orden superior para crear pipelines de datos expresivos.
val result = (1..10)
    .filter { it % 2 != 0 }  // odds
    .map { it * it }          // square
    .take(3)                  // first 3
println(result)  // [1, 9, 25]

Captura de variables en lambdas

Las lambdas pueden capturar variables del ámbito circundante (closure). En Kotlin, incluso pueden capturar y modificar una variable var.
var total = 0
listOf(1, 2, 3, 4).forEach { total += it }
println(total)  // 10

Devolver una lambda desde una función

Las funciones de orden superior también pueden devolver lambdas, lo que permite crear funciones de fábrica.
fun multiplierOf(factor: Int): (Int) -> Int {
    return { n -> n * factor }
}
val double = multiplierOf(2)
val triple = multiplierOf(3)
println(double(5))  // 10
println(triple(5))  // 15

Comprobación rápida

¿Cuándo puede mover una lambda fuera de los paréntesis mediante la sintaxis de lambda final?

Repaso

Las funciones de orden superior reciben lambdas como parámetros. La sintaxis de lambda final mueve la lambda fuera de los paréntesis cuando esta es la última. :: pasa referencias a funciones con nombre. A continuación: ¡el parámetro implícito 'it'!

Preguntas frecuentes

¿La lección «Pasar lambdas a funciones» es gratis?

Sí — el texto completo de «Pasar lambdas a funciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Pasar lambdas a funciones»?

Pase lambdas como argumentos y use la sintaxis de lambda final. Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Academy?

No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Pasar lambdas a funciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?

Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. ¿Qué es una lambda? Sintaxis y tipos
  2. Pasar lambdas a funciones
  3. it: el parámetro implícito
  4. filter, map y find en colecciones
← Volver a Kotlin Academy