0Pricing
Swift Academy · Ders

Özel yineleyiciler ve performans ipuçları

Özel yineleyiciler/diziler uygulayın ve bunları verimli tutun: tek geçişli davranış, ek ayırmalardan kaçınma ve tembel görünümler kullanma.

Özel yineleyiciler ve performans ipuçları, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 3 dersten oluşur.

Özel yineleyicilere giriş

Kendi IteratorProtocol ve Sequence türlerinizi oluşturunuz. Yineleyiciler genellikle tek geçişlidir ve sonunda nil döndürmelidir.

IteratorProtocol örneği

Her çağrıda bir öğe üretmek ve durumu ilerletmek için next() uygulayınız; işlemi bitirmek için nil döndürünüz.

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

Sequence sarmalayıcısı

Bir Sequence, makeIterator() sağlar. Artık for-in, map, filter ve benzerlerini kullanabilirsiniz.

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

AnyIterator kısayolu

AnyIterator/AnySequence, bir kapanışla hızlıca yineleyiciler oluşturmanızı sağlar; hafif üreticiler için kullanışlıdır.

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

Çalışmadan tasarruf etmek için lazy

Bir işlem hattının yalnızca bir bölümüne ihtiyaç duyduğunuzda .lazy kullanmayı tercih ediniz; bellek ayırma ve çalışma miktarını azaltır.

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)

Performans ipuçları

İpuçları:

  • Yineleyicileri basit tutunuz; durumu ilerletip sonunda nil döndürünüz.
  • Ara dizilerden kaçınmak için .lazy kullanınız.
  • Boyutu biliyorsanız sonuçlar için kapasite ayırınız (res.reserveCapacity(n)).
  • Birden çok geçişe veya dizinlere ihtiyacınız olduğunda Collection algoritmalarını tercih ediniz.

Yineleyici kuralı

Kısa kontrol: Yinelemenin sonunda next() ne yapmalıdır?

Özet

Özet: En küçük IteratorProtocol uygulamasını yazınız, bunu bir Sequence içine sarınız ve mümkün olduğunda .lazy ile önceden bellek ayırmayı kullanarak işlem hatlarını verimli tutunuz.

Sıkça Sorulan Sorular

“Özel yineleyiciler ve performans ipuçları” dersi ücretsiz mi?

Evet — “Özel yineleyiciler ve performans ipuçları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 3 dersten oluşur.

“Özel yineleyiciler ve performans ipuçları” dersinde ne öğreneceğim?

Özel yineleyiciler/diziler uygulayın ve bunları verimli tutun: tek geçişli davranış, ek ayırmalardan kaçınma ve tembel görünümler kullanma. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.

“Özel yineleyiciler ve performans ipuçları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Sequence/Collection hiyerarşileri
  2. Map/Filter/Reduce, tembel diziler
  3. Özel yineleyiciler ve performans ipuçları
← Swift Academy Sayfasına Dön