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
- Batasan Generik dan Klausa where
- Tipe Opaque dengan Kata Kunci some
- Existential dengan any dan Penghapusan Tipe
- Tipe Associated Utama dan Typed Throws