0Pricing
Swift Academy · Pelajaran

Iterator khusus & kiat performa

Implementasikan iterator/sequence khusus dan jaga efisiensinya: perilaku satu lintasan, hindari alokasi tambahan, serta gunakan tampilan lazy.

Iterator khusus & kiat performa adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 3 pelajaran total.

Pengiterasi khusus 101

Buat IteratorProtocol dan Sequence Anda sendiri. Pengiterasi biasanya hanya berjalan dalam satu lintasan dan harus mengembalikan nil di akhir.

Contoh IteratorProtocol

Implementasikan next() untuk menghasilkan satu elemen pada setiap pemanggilan dan memajukan status; kembalikan nil untuk mengakhiri.

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

Pembungkus Sequence

Sequence menyediakan makeIterator(). Kini Anda dapat menggunakan for-in, map, filter, dan sebagainya.

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

Pintasan AnyIterator

AnyIterator/AnySequence memungkinkan Anda membuat pengiterasi dengan cepat menggunakan fungsi penutup—berguna untuk pembangkit ringan.

// 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("")

Gunakan lazy untuk menghemat pekerjaan

Utamakan .lazy saat hanya sebagian alur pemrosesan yang diperlukan; cara ini menghemat alokasi dan pekerjaan.

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)

Kiat kinerja

Kiat:

  • Buat pengiterasi tetap sederhana—majukan status dan kembalikan nil di akhir.
  • Gunakan .lazy untuk menghindari larik perantara.
  • Sisakan kapasitas untuk hasil jika Anda mengetahui ukurannya (res.reserveCapacity(n)).
  • Utamakan algoritme Collection saat Anda memerlukan lintasan berulang atau indeks.

Aturan pengiterasi

Pemeriksaan singkat: Apa yang harus dilakukan next() di akhir iterasi?

Ringkasan

Ringkasan: Tulis IteratorProtocol minimal, bungkus dalam Sequence, dan jaga efisiensi alur pemrosesan dengan .lazy serta praalokasi jika memungkinkan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Iterator khusus & kiat performa” gratis?

Ya — teks lengkap “Iterator khusus & kiat performa” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Iterator khusus & kiat performa”?

Implementasikan iterator/sequence khusus dan jaga efisiensinya: perilaku satu lintasan, hindari alokasi tambahan, serta gunakan tampilan lazy. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Iterator khusus & kiat performa” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Hierarki Sequence/Collection
  2. Map/Filter/Reduce, sequence malas
  3. Iterator khusus & kiat performa
← Kembali ke Swift Academy