0Pricing
Android Academy · Lección

Lambdas y funciones de orden superior

Pase comportamiento como valores

Lambdas y funciones de orden superior es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 4 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 Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.

¿Qué es una lambda?

Una lambda es una función pequeña que puede escribir directamente, sin asignarle un nombre.

Se escribe entre llaves: { x -> x + 1 }. Las lambdas permiten pasar comportamiento como si fueran datos.

Ya las ha usado con map y filter.

Almacenar una lambda en una variable

Una lambda es un valor, por lo que puede almacenarla en una variable y llamarla más tarde.

Llámela como a una función, usando paréntesis.

fun main() {
    val square = { x: Int -> x * x }
    println(square(5))
    println(square(3))
}

El atajo it

Cuando una lambda recibe exactamente un parámetro, puede omitir su nombre y usar it.

Esto mantiene las lambdas cortas compactas y legibles.

fun main() {
    val nums = listOf(1, 2, 3, 4)
    val big = nums.filter { it > 2 }
    println(big)
}

Varios parámetros

Una lambda puede recibir más de un parámetro, separados por comas antes de la flecha.

La última expresión de la lambda es su valor de retorno.

fun main() {
    val add = { a: Int, b: Int -> a + b }
    println(add(4, 6))
}

Funciones de orden superior

Una función de orden superior es una función que recibe otra función como parámetro o devuelve una función.

El tipo de función (Int) -> Int significa «recibe un Int y devuelve un Int». Así es como funcionan map y filter.

Escribir una función de orden superior

Aquí definimos applyTwice, que acepta una función y la ejecuta dos veces.

El parámetro op tiene el tipo (Int) -> Int.

fun applyTwice(x: Int, op: (Int) -> Int): Int {
    return op(op(x))
}

fun main() {
    println(applyTwice(3) { it + 1 })
}

Sintaxis de lambda final

Cuando una lambda es el último argumento, puede colocarla fuera de los paréntesis.

Por eso list.filter { ... } resulta tan claro. Las dos formas siguientes son equivalentes.

fun main() {
    val nums = listOf(1, 2, 3)
    println(nums.map({ it * 2 }))
    println(nums.map { it * 2 })
}

Pasar funciones con nombre

Puede pasar una función con nombre existente cuando se espera una lambda usando ::, lo que se denomina referencia a una función.

Así evita volver a escribir la lógica como una lambda.

fun isOdd(n: Int) = n % 2 == 1

fun main() {
    val nums = listOf(1, 2, 3, 4)
    println(nums.filter(::isOdd))
}

Devolver una función

Una función de orden superior también puede devolver una función. Aquí multiplier crea una lambda personalizada para multiplicar.

Esta es una forma sencilla de configuración.

fun multiplier(factor: Int): (Int) -> Int {
    return { it * factor }
}

fun main() {
    val triple = multiplier(3)
    println(triple(5))
}

Las lambdas capturan variables

Una lambda puede leer variables del ámbito que la rodea. Esto se denomina cierre.

Aquí la lambda recuerda bonus incluso después de pasarla a otro lugar.

fun main() {
    val bonus = 10
    val nums = listOf(1, 2, 3)
    println(nums.map { it + bonus })
}

Por qué son importantes las lambdas en Android

En Android, las lambdas permiten expresar las devoluciones de llamada con claridad. El listener de un clic de botón es simplemente una lambda que entrega al framework.

Por ejemplo: button.setOnClickListener { showMenu() } ejecuta su código al tocar el botón.

Comprobación rápida

Compruebe su comprensión de las lambdas y las funciones de orden superior.

Recapitulación

Las lambdas son funciones insertadas sin nombre, escritas entre llaves, que usan it para un único parámetro.

Las funciones de orden superior reciben o devuelven funciones, lo que permite crear callbacks claros y operaciones reutilizables como map y filter.

Preguntas frecuentes

¿La lección «Lambdas y funciones de orden superior» es gratis?

Sí — el texto completo de «Lambdas y funciones de orden superior» 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 Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Lambdas y funciones de orden superior»?

Pase comportamiento como valores Practicas Android 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 Android Academy?

No se requiere experiencia previa. Android 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 4 de 4.

¿Cuánto tiempo toma la lección «Lambdas y funciones de orden superior»?

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 Android Academy?

Sí. Cada lección de Android 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. Listas y listas mutables
  2. Mapas y conjuntos
  3. map, filter, forEach
  4. Lambdas y funciones de orden superior
← Volver a Android Academy