lazy Özelliği
Dönüştürme işlemini gerekene kadar erteleyin.
lazy Özelliği, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. 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 4 dersten oluşur.
Varsayılan Olarak Hemen Çalıştırma
Standart koleksiyon yöntemleri hemen çalışır: map, filter ve benzerleri, yalnızca ilk öğeyi okuyacak olsanız bile hemen çalışır ve eksiksiz bir yeni dizi oluşturur.
İşlem Hemen Gerçekleşir
Bu işlem, dönüştürülmüş dizinin tamamını önceden oluşturur:
let nums = [1, 2, 3, 4, 5]
let doubled = nums.map { $0 * 2 } // whole array built now
print(doubled.first!) // 2Gecikmeli Özellik
Her koleksiyon bir .lazy görünümü sunar. Gecikmeli görünüm üzerindeki işlemler ertelenir: siz gerçekten yineleme yapana veya belirli bir öğe isteyene kadar çalışmazlar.
Gecikmeli Görünüm Oluşturma
Zincirin başına yalnızca .lazy ekleyin:
let nums = [1, 2, 3, 4, 5]
let view = nums.lazy.map { $0 * 2 }
// nothing computed yet
print(Array(view)) // [2, 4, 6, 8, 10]Ertelenmiş Yürütmenin Kanıtı
Yan etkiler, kapanışın yalnızca gerektiğinde çalıştığını gösterir:
let nums = [1, 2, 3]
let lazyMapped = nums.lazy.map { n -> Int in
print("transforming \(n)")
return n * 2
}
print("created view")
print(lazyMapped.first!) // prints "transforming 1" then 2Gecikmeli İşlem Farklı Tür Döndürür
Gecikmeli zincir bir Dizi değil, hafif bir sarmalayıcıdır:
let nums = [1, 2, 3]
let view = nums.lazy.map { $0 + 1 }
print(type(of: view).self != [Int].self) // true -- it is a LazyMapSequenceGecikmeli Görünümü Somutlaştırma
Saklamanız veya döndürmeniz gerektiğinde Array(...) ile yeniden somut bir diziye dönüştürün:
let nums = [1, 2, 3]
let result: [Int] = Array(nums.lazy.map { $0 * 10 })
print(result) // [10, 20, 30]Gecikmeli İşlemle Koşula Uyan İlk Öğeyi Bulma
Erken durduğunuzda gecikmeli işlem avantaj sağlar. Eşleşme bulmak için yalnızca yeterli sayıda öğe işlenir:
let nums = [1, 2, 3, 4, 5, 6]
let firstBig = nums.lazy.map { $0 * $0 }.first { $0 > 10 }
print(firstBig!) // 16 (stops at 4*4)Aralık Üzerinde Gecikmeli İşlem
Aralıklar da gecikmeli işlemle çalışır; bu, büyük veya neredeyse sonsuz diziler için kullanışlıdır:
let firstThree = (1...1000).lazy.map { $0 * $0 }.prefix(3)
print(Array(firstThree)) // [1, 4, 9]Görünüm Yeniden Değerlendirildiğinde
Gecikmeli görünüm, her yinelediğinizde yeniden hesaplanır — hiçbir sonucu saklamaz. İki kez yinelerseniz dönüşüm de iki kez çalışır:
var calls = 0
let view = [1, 2].lazy.map { (n: Int) -> Int in calls += 1; return n }
_ = Array(view)
_ = Array(view)
print(calls) // 4Gecikmeli İşlemi Ne Zaman Kullanmalı
Uzun bir zinciriniz varsa ancak sonucun yalnızca bir bölümünü tüketiyorsanız .lazy ekleyin — ilk eşleşmeyi, bir prefix'i veya tek bir indirgemeyi almak için. Tamamını tükettiğiniz küçük dizilerde hemen çalışan yaklaşım daha basittir.
let nums = Array(1...100)
let result = nums.lazy.filter { $0 % 7 == 0 }.first
print(result!) // 7Hızlı Kontrol
.lazy özelliği map ve filter hakkında neyi değiştirir?
Özet
Gecikmeli işlemin temellerini öğrendiniz:
- Standart koleksiyon yöntemleri hemen çalışır — dizileri anında oluştururlar
.lazy, ertelenmiş bir görünüm (özel bir dizi türü) döndürür- İş yalnızca yineleme yaptığınızda veya bir öğe istediğinizde gerçekleşir
Array(...)ile somutlaştırın; görünümler her yinelemede yeniden çalışır
Sırada gecikmeli eşleme ve filtreleme zincirleri var.
Sıkça Sorulan Sorular
“lazy Özelliği” dersi ücretsiz mi?
Evet — “lazy Özelliği” 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 4 dersten oluşur.
“lazy Özelliği” dersinde ne öğreneceğim?
Dönüştürme işlemini gerekene kadar erteleyin. 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, 4 dersinin 1. dersidir.
“lazy Özelliği” 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.