0Pricing
Kotlin Academy · Aula

forEach, repeat e forEachIndexed

Explore auxiliares de iteração no estilo funcional e saiba quando eles são melhores que os laços clássicos.

forEach, repeat e forEachIndexed é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

Iteração funcional

Além de for, o Kotlin oferece iteração de ordem superior: forEach, forEachIndexed e repeat. Elas tornam os laços pequenos mais expressivos.

Noções básicas de forEach

forEach recebe uma lambda e a executa para cada elemento. O elemento recebe implicitamente o nome it.

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

forEach com parâmetro nomeado

Dê um nome mais claro ao parâmetro da lambda quando it não for muito legível.

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

repeat para iterações fixas

repeat(n) executa seu bloco exatamente n vezes. A lambda recebe o índice da iteração, começando em 0.

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

repeat para efeitos colaterais

Use repeat para ações simples que devem ocorrer n vezes: imprimir um separador, tentar uma chamada novamente e assim por diante.

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

forEachIndexed

forEachIndexed fornece o índice e o elemento à lambda.

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

forEach versus for

forEach é conciso, mas não permite usar break/continue. Use um for tradicional se precisar sair antecipadamente.

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()
}

Retornando de forEach

Você pode simular continue em forEach usando um return@forEach rotulado.

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

forEach em um mapa

forEach aplicado a um mapa expõe cada Map.Entry como it; desestruture a entrada para melhorar a legibilidade.

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

Encadeando repeat com outras chamadas

repeat retorna Unit, portanto não é possível encadeá-lo funcionalmente. Use-o apenas para efeitos colaterais.

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

Observação sobre desempenho

Em laços apertados sobre coleções grandes, um for simples é ligeiramente mais rápido porque evita criar uma lambda. Para obter clareza, prefira forEach.

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

Verificação rápida

Qual construção fornece tanto um índice quanto um elemento à sua lambda?

Recapitulação

forEach: uma lambda por elemento. forEachIndexed: índice + elemento. repeat(n): laço com n iterações fixas. Nenhuma delas permite o break clássico — use for para sair antecipadamente.

Perguntas Frequentes

A aula “forEach, repeat e forEachIndexed” é grátis?

Sim — o texto completo de “forEach, repeat e forEachIndexed” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “forEach, repeat e forEachIndexed”?

Explore auxiliares de iteração no estilo funcional e saiba quando eles são melhores que os laços clássicos. Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “forEach, repeat e forEachIndexed”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Laço for sobre intervalos e coleções
  2. while e do-while: quando usar cada um
  3. forEach, repeat e forEachIndexed
  4. break, continue e retornos rotulados
← Voltar para Kotlin Academy