Değerleri Başvuruyla Yakalama
Kapanışların çevredeki durumu nasıl yakaladığını anlayın.
Değerleri Başvuruyla Yakalama, 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.
closures Neleri Yakalar
Bir kapanış, başvurduğu çevreleyen kapsamdaki değişkenleri ve sabitleri yakalar. Yakalanan değişkenler referansla tutulur; bu nedenle kapanış daha sonraki değişiklikleri görür.
Bir Sabiti Yakalama
Kapanış, işlev döndükten sonra bile greeting değerini hatırlar:
func makeGreeter() -> () -> String {
let greeting = "Hello"
return { greeting }
}
let greet = makeGreeter()
print(greet()) // "Hello"Bir Değişkeni Referansla Yakalama
count bir var olduğundan, kapanış çağrılar boyunca aynı depolama alanını değiştirir:
func makeCounter() -> () -> Int {
var count = 0
return {
count += 1
return count
}
}
let next = makeCounter()
print(next(), next(), next()) // 1 2 3Paylaşılan Depolama Alanı
İki kapanış aynı değişkeni yakalayabilir ve birbirlerinin değişikliklerini görebilir:
func makePair() -> (() -> Void, () -> Int) {
var value = 0
let inc = { value += 1 }
let read = { value }
return (inc, read)
}
let (inc, read) = makePair()
inc(); inc()
print(read()) // 2Yakalama Daha Sonraki Değişiklikleri Yansıtır
Kapanış, değişkenin kapanış oluşturulduğundaki değerini değil, çağrı anındaki güncel değerini okur:
var message = "first"
let show = { print(message) }
message = "second"
show() // "second"Referansla ve Değerle Yakalama
Varsayılan olarak değiştirilebilir bir değişken referansla yakalanır. Değerinin oluşturulma anındaki donmuş bir kopyasını istiyorsanız, onu yakalama listesinde [x] gibi belirtin.
Bir Değeri Dondurma
Yakalama listesi değeri hemen kopyalar:
var n = 10
let frozen = { [n] in n } // copies 10 now
n = 99
print(frozen()) // 10Her Kapanış, Bağımsız Durum
Üreticiye yapılan her çağrı, yeni bir yakalanmış değişken oluşturur:
func counter() -> () -> Int {
var c = 0
return { c += 1; return c }
}
let a = counter(), b = counter()
print(a(), a(), b()) // 1 2 1Döngü İçinde Yakalama
Gerekli önlemler alınmazsa, bir döngüdeki kapanışlar aynı değişkeni paylaşabilir. Her yinelemenin anlık görüntüsünü almak için yakalama listesi kullanın:
var closures: [() -> Int] = []
for i in 1...3 {
closures.append { [i] in i }
}
print(closures.map { $0() }) // [1, 2, 3]Bir Metotta self Yakalama
Bir metot içinde oluşturulan kapanış, çevreleyen örneği yakalar; böylece özellikleri daha sonra okuyup değiştirebilir:
class Bank {
var balance = 0
func deposit() -> () -> Void {
return { self.balance += 10 }
}
}
let bank = Bank()
let add = bank.deposit()
add(); add()
print(bank.balance) // 20Neden Önemli?
Referansla yakalama, sayaçları, accumulator değerlerini ve durum taşıyan geri çağrıları mümkün kılar — ancak aynı zamanda bir kapanışın nesneleri canlı tutabilmesi anlamına gelir; bunu sırada yakalama listeleriyle yöneteceğiz.
func accumulator() -> (Int) -> Int {
var total = 0
return { total += $0; return total }
}
let add = accumulator()
print(add(10), add(5)) // 10 15Hızlı Kontrol
Değiştirilebilir bir değişken, varsayılan olarak kapanış tarafından nasıl yakalanır?
Özet
Yakalama kurallarını öğrendiniz:
- closures, kapsamlarındaki başvurulan değişkenleri yakalar
- Değiştirilebilir değişkenler referansla yakalanır — değişiklikler ve değiştirmeler paylaşılır
- Bir yakalama listesi olan
[x], oluşturma sırasında bir değer kopyasını dondurur - Bu mekanizma sayaçları ve durum taşıyan geri çağrıları mümkün kılar
Sırada: kaçış yapan closures var.
Sıkça Sorulan Sorular
“Değerleri Başvuruyla Yakalama” dersi ücretsiz mi?
Evet — “Değerleri Başvuruyla Yakalama” 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.
“Değerleri Başvuruyla Yakalama” dersinde ne öğreneceğim?
Kapanışların çevredeki durumu nasıl yakaladığını anlayın. 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.
“Değerleri Başvuruyla Yakalama” 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
- Değerleri Başvuruyla Yakalama
- Kaçış Kapanışları
- Yakalama Listeleri ve Weak Self
- Otomatik Kapanışlar