Iteradores personalizados e dicas de desempenho
Implemente iteradores/sequências personalizados e mantenha-os eficientes: comportamento de passagem única, evitando alocações extras e usando visualizações lazy.
Iteradores personalizados e dicas de desempenho é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 3. 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 3 aulas no total.
Iteradores personalizados: introdução
Crie seu próprio IteratorProtocol e sua própria sequência. Iteradores geralmente são de passagem única e devem retornar nil ao final.
Exemplo de IteratorProtocol
Implemente next() para produzir um elemento por chamada e avançar o estado; retorne nil para finalizar.
struct CountdownIterator: IteratorProtocol {
var current: Int
mutating func next() -> Int? {
guard current >= 0 else { return nil }
defer { current -= 1 } // advance state
return current
}
}
var it = CountdownIterator(current: 3)
while let n = it.next() { print(n, terminator: " ") } // 3 2 1 0
print("")Invólucro de sequência
Uma sequência fornece makeIterator(). Agora você pode usar for-in, map, filter etc.
struct Countdown: Sequence {
let start: Int
func makeIterator() -> CountdownIterator {
CountdownIterator(current: start)
}
}
for n in Countdown(start: 5) {
print(n, terminator: " ") // 5 4 3 2 1 0
}
print("")Atalho com AnyIterator
AnyIterator/AnySequence permitem criar iteradores rapidamente com um fechamento — úteis para geradores leves.
// Build an iterator from a closure
var i = 1
let anyIt = AnyIterator<Int> {
guard i <= 3 else { return nil }
defer { i += 1 }
return i * 10
}
let numbers = AnySequence(anyIt)
for x in numbers { print(x, terminator: " ") } // 10 20 30
print("")Lazy para economizar trabalho
Prefira .lazy quando apenas parte de um fluxo for necessária; isso economiza alocações e trabalho.
let big = Array(1...10_000)
// Eager: builds two intermediate arrays
let eager = big.map { $0 * 2 }.filter { $0 % 3 == 0 }
// Lazy: no temporaries; work is done during collection
let lazyView = big.lazy.map { $0 * 2 }.filter { $0 % 3 == 0 }
let result = Array(lazyView.prefix(5)) // only first 5 actually computed
print(result)Dicas de desempenho
Dicas:
- Mantenha os iteradores simples: avance o estado e retorne
nilao final. - Use .lazy para evitar matrizes intermediárias.
- Reserve capacidade para os resultados quando souber o tamanho (
res.reserveCapacity(n)). - Prefira algoritmos de coleção quando precisar de múltiplas passagens ou índices.
Regra do iterador
Verificação rápida: o que next() deve fazer ao final da iteração?
Recapitulação
Recapitulação: escreva um IteratorProtocol mínimo, envolva-o em uma sequência e mantenha os fluxos eficientes com .lazy e pré-alocação sempre que possível.
Perguntas Frequentes
A aula “Iteradores personalizados e dicas de desempenho” é grátis?
Sim — o texto completo de “Iteradores personalizados e dicas de desempenho” é 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 3 aulas no total.
O que vou aprender em “Iteradores personalizados e dicas de desempenho”?
Implemente iteradores/sequências personalizados e mantenha-os eficientes: comportamento de passagem única, evitando alocações extras e usando visualizações lazy. 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 3.
Quanto tempo leva a aula “Iteradores personalizados e dicas de desempenho”?
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
- Hierarquias Sequence/Collection
- Map/Filter/Reduce e sequências lazy
- Iteradores personalizados e dicas de desempenho