Swift Academy · Ders

Birincil İlişkili Türler ve Türlendirilmiş Throws

Protokol varoluşsal türlerini kısıtlayın ve Swift 6'nın türlendirilmiş hata yayılımını öğrenin.

4. ders / 413 adım

Birincil İlişkili Türler ve Türlendirilmiş Throws, 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.

Birincil İlişkili Türler

Swift 5.7, protokollerde birincil ilişkili türler belirtmenize ve kısıtlanmış varoluşsal türler kullanmanıza olanak tanır.

protocol Container<Element> {
  associatedtype Element
  var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }

Kısıtlanmış Varoluşsal Türler

Birincil ilişkili türlerle, varoluşsal türü daraltmak için any Container yazabilirsiniz.

func printItems(_ c: any Container<Int>) {
  c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))

Koleksiyonlar için Kısıtlanmış Varoluşsal Türler

Collection gibi standart kitaplık protokolleri artık birincil ilişkili türleri destekler.

func first(_ c: any Collection<String>) -> String? {
  c.first
}
print(first(["a","b","c"]) ?? "none")

Tür Belirtilmiş Hatalara Giriş

Swift 6, bir işlevin fırlatabileceği kesin hata türünü bildirmenize olanak tanıyan tür belirtilmiş hataları kullanıma sunar.

enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
  throw NetworkError.timeout
}

Tür Belirtilmiş Hatalarla Eksiksiz Yakalama

Hata türü bilindiği için derleyici, tüm durumların eksiksiz biçimde ele alındığını doğrulayabilir.

do {
  let _ = try fetch()
} catch .timeout {
  print("Timed out")
} catch .notFound {
  print("Not found")
}

Protokollerde Tür Belirtilmiş Hatalar

Protokol gereksinimleri tür belirtilmiş bir hata fırlatabilir; böylece uyumluluk sağlayan türler kesin hata türleri sunabilir.

protocol Fetchable {
  associatedtype Failure: Error
  func fetch() throws(Failure) -> Data
}

Tür Belirtilmiş Hatalarla Yeniden Hata Fırlatma

rethrows, tür belirtilmiş hatalarla çalışır: dış işlev, iç işlevin hata türünü iletir.

func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
  try array.map { try transform($0) }
}

Birincil AT ile Tür Belirtilmiş Hataları Birleştirme

Kesin ve tür güvenli API'ler için her iki özelliği birlikte kullanabilirsiniz.

protocol Repository<Model> {
  associatedtype Model
  associatedtype Failure: Error
  func fetchAll() throws(Failure) -> [Model]
}

Opak Tür Belirtilmiş Hatalar

throws(any Error), tür belirtilmemiş hataların eşdeğeridir ve size bir kaçış yolu sunar.

func riskyOp() throws(any Error) {
  // can throw any error
}

Tür Belirtilmemiş Hatalardan Tür Belirtilmiş Hatalara Geçiş

Geçiş yolu: Hata fırlatan mevcut işlevlere somut hata türünü adım adım ek açıklama olarak ekleyin.

// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }

Tür Belirtilmiş Hatalar ve Eşzamansızlık

Tür belirtilmiş hatalar eşzamansızlıkla doğal biçimde bir araya gelir: async throws(E) geçerli bir sözdizimidir.

func fetchAsync() async throws(NetworkError) -> Data {
  throw NetworkError.notFound
}

Kısa Kontrol

Bir protokoldeki birincil ilişkili tür neyi mümkün kılar?

Ders Özeti

Birincil ilişkili türler (Swift 5.7), any Collection gibi kısıtlanmış varoluşsal türleri mümkün kılar. Tür belirtilmiş hatalar (Swift 6), eksiksiz yakalama blokları için kesin hata türleri bildirmenizi sağlar. Her iki özellik de tür güvenliğini ve API ifade gücünü artırır.

Başlamak ücretsiz

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

“Birincil İlişkili Türler ve Türlendirilmiş Throws” dersi ücretsiz mi?

Evet — “Birincil İlişkili Türler ve Türlendirilmiş Throws” 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.

“Birincil İlişkili Türler ve Türlendirilmiş Throws” dersinde ne öğreneceğim?

Protokol varoluşsal türlerini kısıtlayın ve Swift 6'nın türlendirilmiş hata yayılımını öğrenin. 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.

“Birincil İlişkili Türler ve Türlendirilmiş Throws” 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. Genel Kısıtlamalar ve where Koşulları
  2. some Anahtar Sözcüğüyle Saydam Olmayan Türler
  3. any ve Tür Silme ile Varoluşsal Türler
  4. Birincil İlişkili Türler ve Türlendirilmiş Throws
← Swift Academy Sayfasına Dön