Saindo de Laços Aninhados
Use rótulos para sair de vários níveis de laços.
Saindo de Laços Aninhados é uma aula grátis de Swift 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 Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
O problema dos laços aninhados
Um break comum dentro de um laço aninhado sai apenas do laço interno, deixando o laço externo em execução.
for i in 1...3 {
for j in 1...3 {
if j == 2 { break }
print(i, j)
}
}break com label resolve o problema
Adicione um label ao laço externo e use break outer para sair dos dois laços de uma só vez.
outer: for i in 1...3 {
for j in 1...3 {
if i == 2 && j == 2 { break outer }
print(i, j)
}
}
print("escaped")Pesquisando uma grade 2D
break com label é perfeito para interromper uma pesquisa em 2D assim que o target é encontrado.
let grid = [[1, 2, 3], [4, 5, 6]]
var position = (-1, -1)
find: for r in 0..<grid.count {
for c in 0..<grid[r].count {
if grid[r][c] == 5 {
position = (r, c)
break find
}
}
}
print(position)Sem labels: uma Flag
Uma alternativa sem labels usa uma Flag booleana, mas é mais verbosa e sujeita a erros.
var stop = false
for i in 1...3 {
for j in 1...3 {
if i + j == 4 { stop = true; break }
print(i, j)
}
if stop { break }
}Labels são mais limpos
Em comparação com Flags, break com label expressa a intenção diretamente e evita verificações extras após o laço interno.
outer: for i in 1...3 {
for j in 1...3 {
if i + j == 4 { break outer }
print(i, j)
}
}Três níveis de aninhamento
Os labels funcionam em três ou mais níveis; direcione o laço do qual você precisa sair.
top: for a in 1...2 {
for b in 1...2 {
for c in 1...2 {
if c == 2 { break top }
print(a, b, c)
}
}
}continue com label em aninhamentos
Use continue label para passar à próxima iteração de um laço externo a partir de dentro de um aninhamento profundo.
rows: for r in 1...3 {
for c in 1...3 {
if c == 2 { continue rows }
print(r, c)
}
}Combinando os dois
Você pode combinar break e continue com labels na mesma estrutura aninhada para obter um controle preciso.
scan: for i in 1...3 {
for j in 1...3 {
if j == 1 { continue }
if i == 3 { break scan }
print(i, j)
}
}Desempenho da saída antecipada
Sair assim que a resposta é encontrada evita iterações desperdiçadas em grandes conjuntos de dados.
let data = Array(1...100)
var firstBig = -1
loop: for chunk in stride(from: 0, to: data.count, by: 10) {
for k in chunk..<min(chunk + 10, data.count) {
if data[k] > 25 {
firstBig = data[k]
break loop
}
}
}
print(firstBig)Retornando de uma função
Dentro de uma função, return é outra maneira simples de sair de todos os laços de uma só vez.
func findPair(_ target: Int) -> (Int, Int)? {
for i in 1...5 {
for j in 1...5 {
if i * j == target { return (i, j) }
}
}
return nil
}
print(findPair(12) ?? (-1, -1))Escolhendo uma abordagem
Prefira break com label para sair de laços aninhados no próprio local, ou return quando estiver dentro de uma função e quiser sair completamente.
outer: for x in 1...3 {
for y in 1...3 {
if x * y >= 4 { break outer }
print(x, y)
}
}Verificação rápida
Teste o controle de laços aninhados.
Recapitulação
Um break comum sai apenas do laço mais interno. Identifique o laço externo com um label e use break label para escapar de todos os níveis de uma só vez, o que é mais limpo do que usar uma Flag booleana. Dentro de uma função, return também sai de tudo.
outer: for i in 1...3 {
for j in 1...3 {
if j == 2 { break outer }
print(i, j)
}
}Perguntas Frequentes
A aula “Saindo de Laços Aninhados” é grátis?
Sim — o texto completo de “Saindo de Laços Aninhados” é 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 Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Saindo de Laços Aninhados”?
Use rótulos para sair de vários níveis de laços. Você pratica Swift 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 Swift Academy?
Nenhuma experiência prévia é necessária. Swift 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 “Saindo de Laços Aninhados”?
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 Swift Academy?
Sim. Cada aula de Swift 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
- Noções Básicas de break e continue
- Instruções Rotuladas
- Saindo de Laços Aninhados
- Controle de Laços no Contexto de switch