0Pricing
Kotlin Academy · Lección

forEach, repeat y forEachIndexed

Explore los auxiliares de iteración de estilo funcional y cuándo superan a los bucles clásicos.

forEach, repeat y forEachIndexed es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 3 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.

Iteración funcional

Además de for, Kotlin ofrece iteración de orden superior: forEach, forEachIndexed y repeat. Estas funciones hacen más expresivos los bucles pequeños.

Conceptos básicos de forEach

forEach recibe una lambda y la ejecuta para cada elemento. El elemento recibe implícitamente el nombre it.

fun main() {
    val items = listOf("a", "b", "c")
    items.forEach { println(it) }
}

forEach con un parámetro con nombre

Asigne a la lambda un nombre de parámetro más claro cuando it no resulte adecuado.

fun main() {
    val users = listOf("Alice", "Bob", "Charlie")
    users.forEach { name ->
        println("Hello, $name!")
    }
}

repeat para un número fijo de iteraciones

repeat(n) ejecuta su bloque exactamente n veces. La lambda recibe el índice de la iteración, empezando en 0.

fun main() {
    repeat(5) {
        println("Iteration $it")
    }
}

repeat para efectos secundarios

Use repeat para acciones sencillas que se realizan n veces: imprimir un separador, reintentar una llamada, etc.

fun main() {
    repeat(3) { println("-".repeat(20)) }
}

forEachIndexed

forEachIndexed proporciona a la lambda tanto el índice como el elemento.

fun main() {
    val words = listOf("Hello", "Kotlin", "World")
    words.forEachIndexed { index, word ->
        println("$index: $word")
    }
}

forEach frente a for

forEach es conciso, pero no permite usar break ni continue. Use un for tradicional si necesita salir antes.

fun main() {
    val nums = listOf(1, 2, 3, 4, 5)
    // forEach: runs to completion
    nums.forEach { print("$it ") }
    println()
    // for: can break
    for (n in nums) {
        if (n == 3) break
        print("$n ")
    }
    println()
}

Retornar desde forEach

Puede simular continue en forEach mediante un return@forEach etiquetado.

fun main() {
    listOf(1, 2, 3, 4).forEach {
        if (it % 2 == 0) return@forEach // skip
        println("odd: $it")
    }
}

forEach sobre un mapa

forEach aplicado a un mapa expone cada Map.Entry como it; desestructúrelo para mejorar la legibilidad.

fun main() {
    val scores = mapOf("Alice" to 9, "Bob" to 7)
    scores.forEach { (name, score) ->
        println("$name -> $score")
    }
}

Encadenar repeat con otras llamadas

repeat devuelve Unit, por lo que no puede encadenarlo de forma funcional. Úselo únicamente para efectos secundarios.

fun main() {
    var sum = 0
    repeat(10) { sum += it }
    println("Sum 0..9 = $sum") // 45
}

Nota sobre el rendimiento

En bucles ajustados sobre colecciones grandes, un for sencillo es ligeramente más rápido porque evita crear una lambda. Para mejorar la claridad, prefiera forEach.

fun main() {
    val n = 1_000_000
    var sum = 0L
    for (i in 1..n) sum += i
    println(sum)
}

Comprobación rápida

¿Qué construcción proporciona tanto un índice como un elemento a su lambda?

Resumen

forEach: una lambda por elemento. forEachIndexed: índice y elemento. repeat(n): bucle fijo de n iteraciones. Ninguna admite el break clásico; use for para salir antes.

Preguntas frecuentes

¿La lección «forEach, repeat y forEachIndexed» es gratis?

Sí — el texto completo de «forEach, repeat y forEachIndexed» 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 «forEach, repeat y forEachIndexed»?

Explore los auxiliares de iteración de estilo funcional y cuándo superan a los bucles clásicos. 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 3 de 4.

¿Cuánto tiempo toma la lección «forEach, repeat y forEachIndexed»?

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. Bucle for sobre rangos y colecciones
  2. while y do-while: cuándo usar cada uno
  3. forEach, repeat y forEachIndexed
  4. break, continue y retornos etiquetados
← Volver a Kotlin Academy