0Pricing
Swift Academy · Pelajaran

Tipe Associated Utama dan Typed Throws

Membatasi existential protokol dan propagasi error bertipe dalam Swift 6.

Tipe Associated Utama dan Typed Throws adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Tipe Terkait Utama

Swift 5.7 memungkinkan Anda menentukan tipe terkait utama pada protokol sehingga eksistensial terbatas dapat digunakan.

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

Eksistensial Terbatas

Dengan tipe terkait utama, Anda dapat menulis any Container untuk mempersempit eksistensial.

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

Eksistensial Terbatas pada Koleksi

Protokol pustaka standar seperti Collection kini mendukung tipe terkait utama.

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

Pengantar Pelemparan Error Bertipe

Swift 6 memperkenalkan pelemparan error bertipe sehingga Anda dapat menyatakan tipe error persis yang mungkin dilemparkan oleh suatu fungsi.

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

Penanganan Menyeluruh dengan Pelemparan Error Bertipe

Karena tipe error telah diketahui, compiler dapat memverifikasi bahwa semua kasus ditangani secara menyeluruh.

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

Pelemparan Error Bertipe dalam Protokol

Persyaratan protokol dapat menentukan pelemparan bertipe sehingga tipe yang mematuhinya dapat menyediakan tipe error yang tepat.

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

Pelemparan Ulang dengan Pelemparan Error Bertipe

rethrows bekerja dengan pelemparan bertipe: fungsi luar meneruskan tipe error dari fungsi dalam.

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

Menggabungkan AT Utama dengan Pelemparan Error Bertipe

Anda dapat menggunakan kedua fitur tersebut secara bersamaan untuk membuat API yang presisi dan aman secara tipe.

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

Pelemparan Error Bertipe Opak

throws(any Error) setara dengan pelemparan tanpa tipe, sehingga menyediakan jalan keluar ketika diperlukan.

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

Migrasi: dari Pelemparan Tanpa Tipe ke Pelemparan Bertipe

Jalur migrasi: beri anotasi pada fungsi yang sudah melempar error dengan tipe error konkret secara bertahap.

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

Pelemparan Bertipe dan Asinkron

Pelemparan bertipe berpadu secara alami dengan operasi asinkron: async throws(E) adalah sintaks yang valid.

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

Pemeriksaan Singkat

Apa yang dimungkinkan oleh tipe terkait utama pada sebuah protokol?

Ringkasan Pelajaran

Tipe terkait utama (Swift 5.7) memungkinkan eksistensial terbatas seperti any Collection. Pelemparan bertipe (Swift 6) memungkinkan Anda menyatakan tipe error persis untuk blok penanganan yang menyeluruh. Kedua fitur ini meningkatkan keamanan tipe dan ekspresivitas API.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Tipe Associated Utama dan Typed Throws” gratis?

Ya — teks lengkap “Tipe Associated Utama dan Typed Throws” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Tipe Associated Utama dan Typed Throws”?

Membatasi existential protokol dan propagasi error bertipe dalam Swift 6. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Tipe Associated Utama dan Typed Throws” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Batasan Generik dan Klausa where
  2. Tipe Opaque dengan Kata Kunci some
  3. Existential dengan any dan Penghapusan Tipe
  4. Tipe Associated Utama dan Typed Throws
← Kembali ke Swift Academy