Sobes.tech
Middle

Kapanımlar nasıl value type türündeki değerleri yakalayabilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kapanışlar, kapanışın tanımlandığı anda value türündeki değerin bir kopyasını yakalar. Eğer value türündeki değer, kapanıştan sonra değişirse, kapanış içinde orijinal kopyası erişilebilir ve değiştirilmiş değer değil.

var counter = 0

let incrementCounter = { // Kapanış, `counter`'ın (0) bir kopyasını yakalar
    counter += 1
    print(counter)
}

incrementCounter() // 1 yazdırır
counter = 10 // Orijinal `counter` değişkenini değiştiriyoruz

incrementCounter() // 2 yazdırır. Kapanış, yakalanan kopya ile çalışır, değiştirilmiş değişken ile değil.

@escaping kullanırken, value türündeki kapanışlar ile bu kopyalama mekanizmasını dikkate almak önemlidir, çünkü değer kapanış çağrısından önce değişebilir.