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
- Laço for sobre intervalos e coleções
- while e do-while: quando usar cada um
- forEach, repeat e forEachIndexed
- break, continue e retornos rotulados