0Pricing
Swift Academy · Ders

Escaping ve non-escaping, autoclosure'lar

Non-escaping (varsayılan) closure'lar ile @escaping (saklanan veya dönüşten sonra kullanılan) closure'ları anlayın; tembel değerlendirmeyle daha sade çağrı noktaları için @autoclosure kullanın.

Escaping ve non-escaping, autoclosure'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.

Genel bakış

Amaç: Bir closure'ın ne zaman varsayılan olarak kaçmayan, ne zaman @escaping (saklanan veya zaman uyumsuz) olduğunu ve @autoclosure'ın çağrı noktalarını nasıl daha temiz hale getirdiğini öğrenmek.

Varsayılan olarak kaçmayan

Closure parametreleri varsayılan olarak kaçmayan durumdadır; işlev dönmeden önce çağrılır ve hiçbir zaman saklanmaz.

// Non-escaping by default: used immediately inside the function.
func applyTwice(_ f: (Int) -> Int, to x: Int) -> Int {
    return f(f(x))   // called synchronously; not stored
}
let doubled = applyTwice({ $0 * 2 }, to: 3)
print(doubled)  // 12

Kaçan closure

Closure'ı saklıyorsanız veya dönüşten sonra çalıştırıyorsanız (örneğin zamanlayıcılar ve zaman uyumsuz işler) parametreyi @escaping olarak işaretleyin.

// Need @escaping when storing for later use:
var tasks: [() -> Void] = []

func addTask(_ work: @escaping () -> Void) {
    tasks.append(work)  // stored to run later
}

addTask { print("run later") }
tasks.forEach { $0() }

Zaman uyumsuz tamamlama

Zaman uyumsuz arayüzler genellikle işlev döndükten sonra çağrılan @escaping tamamlama işleyicilerini alır.

func fetchData(completion: @escaping (String) -> Void) {
    // simulate async: call completion in the future
    // (In real apps, use DispatchQueue or URLSession)
    completion("done")  // still escaping by contract (may be called later)
}
fetchData { result in print(result) }

Otomatik closure

@autoclosure, çağıranların closure yazmak yerine bir ifade aktarmasını sağlar ve okunabilirliği artırır.

// @autoclosure converts an expression into () -> Bool automatically.
func logIf(_ condition: @autoclosure () -> Bool) {
    if condition() { print("Condition is true") }
}

let x = 3
logIf(x > 1)       // no braces needed; expression is turned into a closure

Otomatik closure ve kaçma

@autoclosure @escaping, aktarılan ifadeyi daha sonra değerlendirmek üzere saklar; yakalanan duruma ve zamana dikkat edin.

// You can combine @autoclosure with @escaping:
// (be careful: the expression is captured and evaluated later)
var checks: [() -> Bool] = []

func enqueueCheck(_ condition: @autoclosure @escaping () -> Bool) {
    checks.append(condition)   // stored to run later
}

var threshold = 10
enqueueCheck(threshold > 5)   // captures current variable by reference semantics
threshold = 3
print(checks.map { $0() })    // re-evaluates with updated threshold

Kaçma kuralı

Hızlı kontrol: @escaping ne zaman gereklidir?

Özet

Özet: Closure'lar varsayılan olarak kaçmaz. Saklanıyor veya daha sonra çağrılıyorsa @escaping kullanın. Daha temiz çağrı noktaları için @autoclosure kullanın ve bunu @escaping ile dikkatli biçimde birleştirin.

Sıkça Sorulan Sorular

“Escaping ve non-escaping, autoclosure'lar” dersi ücretsiz mi?

Evet — “Escaping ve non-escaping, autoclosure'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.

“Escaping ve non-escaping, autoclosure'lar” dersinde ne öğreneceğim?

Non-escaping (varsayılan) closure'lar ile @escaping (saklanan veya dönüşten sonra kullanılan) closure'ları anlayın; tembel değerlendirmeyle daha sade çağrı noktaları için @autoclosure kullanı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, 3 dersinin 3. dersidir.

“Escaping ve non-escaping, autoclosure'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. Closure'lar ve yakalama temelleri
  2. Yakalama listeleri — weak/unowned ve değer yakalama
  3. Escaping ve non-escaping, autoclosure'lar
← Swift Academy Sayfasına Dön