associatedtype & protokol generik
Definisikan protokol dengan associatedtype , lihat cara tipe yang mematuhinya mengikat tipe tersebut, dan gunakan fungsi generik dengan batasan protokol.
associatedtype & protokol generik adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. 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 3 pelajaran total.
Mengapa tipe terkait?
Protokol dapat bersifat generik melalui associatedtype. Tipe yang mengadopsinya mengikat placeholder tersebut ke tipe konkret.
Protokol dengan associatedtype
associatedtype Item berperan seperti parameter tipe. Persyaratan dapat menggunakannya dalam metode, subskrip, dan properti.
protocol Container {
associatedtype Item
mutating func append(_ item: Item)
var count: Int { get }
subscript(index: Int) -> Item { get }
}Kesesuaian konkret
Tipe yang mengadopsi protokol memilih Item konkret (di sini Int) dengan mengimplementasikan persyaratan menggunakan tipe tersebut.
struct IntStack: Container {
// Binds Item == Int implicitly by usage
private var items: [Int] = []
mutating func append(_ item: Int) { items.append(item) }
var count: Int { items.count }
subscript(index: Int) -> Int { items[index] }
}
var st = IntStack()
st.append(10); st.append(20)
print(st.count, st[1])Tipe generik yang mengadopsi protokol
Tipe generik dapat mengadopsi protokol dengan mengikat Item == Element, sehingga protokol tetap generik dan dapat digunakan kembali.
struct Stack<Element>: Container {
private var items: [Element] = []
mutating func append(_ item: Element) { items.append(item) }
var count: Int { items.count }
subscript(index: Int) -> Element { items[index] }
// Here, associatedtype Item == Element
}
var s = Stack<String>()
s.append("hi"); s.append("bye")
print(s.count, s[1])Menggunakan protokol dalam generik
Batasi fungsi dengan C: Container. Anda dapat menggunakan C.Item secara abstrak tanpa menetapkannya ke tipe tertentu.
// Generic algorithm operating on any Container
func dumpFirstTwo<C: Container>(_ c: C) {
// We can talk about C.Item but not assume concrete type
if c.count >= 2 {
print("0:", c[0])
print("1:", c[1])
} else {
print("too few elements")
}
}
dumpFirstTwo(s) // works with Stack<String>
dumpFirstTwo(st) // works with IntStackCatatan & kiat
Catatan:
- Protokol dengan tipe terkait tidak dapat langsung digunakan sebagai tipe; utamakan generik atau penghapusan tipe.
- Beri nama placeholder dengan jelas (Item, Element).
- Kesesuaian dapat ditulis secara eksplisit (
typealias Item = ...) atau diinferensikan dari tanda tangan.
Arti associatedtype
Pemeriksaan cepat: Apa arti associatedtype?
Ringkasan
Ringkasan: Gunakan associatedtype untuk membuat protokol menjadi generik. Tipe yang mengadopsinya memilih tipe konkret, dan fungsi generik dapat bekerja dengan pengadopsi mana pun melalui batasan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “associatedtype & protokol generik” gratis?
Ya — teks lengkap “associatedtype & protokol generik” 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 3 pelajaran total.
Apa yang akan aku pelajari di “associatedtype & protokol generik”?
Definisikan protokol dengan associatedtype , lihat cara tipe yang mematuhinya mengikat tipe tersebut, dan gunakan fungsi generik dengan batasan protokol. 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 1 dari 3.
Berapa lama pelajaran “associatedtype & protokol generik” 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
- associatedtype & protokol generik
- Pola penghapusan tipe (AnySequence/AnyIterator)
- Kapan menggunakan eksistensial (any P) vs generik