Otomatik Kapanışlar
@autoclosure ile ifade değerlendirmesini erteleyin.
Otomatik Kapanışlar, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. 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.
Otomatik Kapanış Nedir?
@autoclosure, bir bağımsız değişken ifadesini otomatik olarak kapanışa sarar; böylece ifade işlev onu gerçekten kullanana kadar değerlendirilmez. Çağıran taraf bir kapanış yerine yalın bir ifade yazar.
Otomatik Kapanış Olmadan
Normalde ertelenmiş değerlendirme, çağrı noktasında açık bir kapanış gerektirir:
func logIf(_ cond: Bool, _ message: () -> String) {
if cond { print(message()) }
}
logIf(true) { "expensive" } // caller writes bracesOtomatik Kapanışla
@autoclosure, çağıran tarafın yalın bir ifade geçmesine olanak tanır:
func logIf(_ cond: Bool, _ message: @autoclosure () -> String) {
if cond { print(message()) }
}
logIf(true, "expensive") // no braces, evaluated only if condErtelenmiş Değerlendirme Kanıtı
İfade yalnızca kapanış çağrıldığında çalışır:
func pick(_ cond: Bool, _ value: @autoclosure () -> Int) -> Int {
cond ? value() : -1
}
func costly() -> Int { print("computed"); return 42 }
print(pick(false, costly())) // -1 -- "computed" never printsStandart Kitaplıkta Kullanıldığı Yerler
&& ve || işleçleri, assert ve ?? işlecinin tümü, sağ tarafın yalnızca gerektiğinde değerlendirilmesi için otomatik kapanışlar kullanır.
?? Gibi Kısa Devreli
Gerekmiyorsa yedek değeri atlayan özel bir varsayılan değer işlevi:
func orElse<T>(_ value: T?, _ fallback: @autoclosure () -> T) -> T {
value ?? fallback()
}
func makeDefault() -> Int { print("built"); return 0 }
print(orElse(5, makeDefault())) // 5 -- "built" never printsTembel assert Tarzı İletiler
İletiyi yalnızca denetim başarısız olduğunda oluşturun:
func check(_ cond: Bool, _ msg: @autoclosure () -> String) {
if !cond { print("FAIL: \(msg())") }
}
check(true, "this is never built")
check(false, "boom") // FAIL: boomOtomatik Kapanış ve Kaçış
Ertelenen ifadeyi daha sonra saklamak için @escaping ile birleştirin:
var thunks: [() -> Int] = []
func defer2(_ expr: @autoclosure @escaping () -> Int) {
thunks.append(expr)
}
defer2(1 + 1)
print(thunks[0]()) // 2 -- computed on demandÇağrı Noktasında Daha Temiz Okuma
Kazanım tamamen söz dizimseldir: çağıranlar bir değer yazar, işlev ise bir kapanış alır:
func unless(_ cond: Bool, _ value: @autoclosure () -> String) -> String {
cond ? "skipped" : value()
}
print(unless(false, "shown")) // "shown"NOT Ne Zaman Kullanılmamalı?
Otomatik kapanışlar, bir bağımsız değişkenin kapanış olduğunu gizleyebilir; bu da okuyucuları şaşırtabilir. Bunları ölçülü kullanın — yalnızca maliyetli varsayılan değerlerden kaçınmak gibi ertelenmiş değerlendirmenin gerçekten yarar sağladığı durumlarda.
func first<T>(_ a: T?, _ b: @autoclosure () -> T) -> T { a ?? b() }
print(first(nil, 99)) // 99Otomatik Kapanışlar Parametre Almaz
Bir otomatik kapanış her zaman () -> T biçimindedir — tek bir ifadeyi sarar ve parametre alamaz:
func once(_ make: @autoclosure () -> [Int]) -> Int {
make().count
}
print(once([1, 2, 3])) // 3Hızlı Kontrol
@autoclosure, bağımsız değişkenine ne yapar?
Özet
Otomatik kapanışları öğrendiniz:
@autoclosure, bir bağımsız değişken ifadesini() -> Tkapanışına sarar- İfade yalnızca işlev onu çağırdığında çalışır — ertelenmiş değerlendirme
&&,||,??veassertişleçlerini mümkün kılar- Saklamak için
@escapingile birleştirin; okunabilirlik için ölçülü kullanın
Kurs tamamlandı! Sırada: Eşitlenebilir, Özetlenebilir, Karşılaştırılabilir var.
Yapay zeka eğitmeniyle Swift öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 122
- Dersler
- 409
Sıkça Sorulan Sorular
“Otomatik Kapanışlar” dersi ücretsiz mi?
Evet — “Otomatik Kapanış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 4 dersten oluşur.
“Otomatik Kapanışlar” dersinde ne öğreneceğim?
@autoclosure ile ifade değerlendirmesini 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 4. dersidir.
“Otomatik Kapanış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.