0Pricing
Swift Academy · Aula

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 nil ao 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

  1. Hierarquias Sequence/Collection
  2. Map/Filter/Reduce e sequências lazy
  3. Iteradores personalizados e dicas de desempenho
← Voltar para Swift Academy