0Pricing
Swift Academy · Pelajaran

Kesesuaian Bersyarat

Membuat tipe generik memenuhi protokol secara bersyarat menggunakan klausa where.

Kesesuaian Bersyarat adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Selamat Datang

Kesesuaian bersyarat memungkinkan tipe generik menyesuaikan diri dengan protokol hanya ketika parameter tipenya memenuhi batasan tertentu. Ini merupakan dasar penting dari ekspresivitas sistem tipe Swift.

Kesesuaian Bersyarat Dasar

```swift extension Array: Equatable where Element: Equatable { // Array is Equatable only when Element is Equatable } let a = [1,2,3] let b = [1,2,3] print(a == b) // true — works because Int is Equatable ```

Tipe Generik Kustom

```swift struct Box { var value: T } extension Box: Equatable where T: Equatable { static func == (lhs: Box, rhs: Box) -> Bool { lhs.value == rhs.value } } print(Box(value: 42) == Box(value: 42)) // true ```

Hashable Bersyarat

```swift extension Box: Hashable where T: Hashable { func hash(into hasher: inout Hasher) { hasher.combine(value) } } // Box is Hashable; Box is not ```

Codable Bersyarat

```swift extension Box: Codable where T: Codable {} let box = Box(value: "hello") let data = try JSONEncoder().encode(box) // works — String is Codable ```

Klausa where pada Ekstensi

```swift extension Collection where Element == Int { var sum: Int { reduce(0, +) } } print([1,2,3,4].sum) // 10 // This extension only applies to collections of Int ```

Beberapa Batasan

```swift extension Dictionary where Key: Comparable, Value: Equatable { func sortedByKey() -> [(Key, Value)] { sorted { $0.key < $1.key } } } ```

Kesesuaian Bersyarat Protokol

```swift protocol Printable { func prettyPrint() } extension Optional: Printable where Wrapped: Printable { func prettyPrint() { switch self { case .none: print("nil") case .some(let v): v.prettyPrint() } } } ```

Menggunakan Kesesuaian Bersyarat

```swift let opt: Int? = 42 // If Int conformed to Printable: // opt.prettyPrint() // "42" // Standard usage: let nums = Optional([1,2,3]) // [1,2,3]? if let arr = nums, arr == [1,2,3] { ... } // Equatable via conditional ```

Peringatan Kesesuaian Retroaktif

Swift 5.7+ memperingatkan tentang kesesuaian retroaktif (menambahkan kesesuaian ke tipe dari modul lain): ```swift extension String: SomeThirdPartyProtocol {} // ⚠️ retroactive ``` Tandai secara eksplisit dengan `@retroactive` jika memang disengaja.

Pemeriksaan Singkat

Kata kunci apa yang memperkenalkan kondisi dalam ekstensi kesesuaian bersyarat?

Rangkuman

Hal-hal penting: • `extension T: Protocol where Param: Constraint` — kesesuaian bersyarat • Array, Optional, Result, dan sebagainya menggunakan ini untuk Equatable, Hashable, Codable • Tipe generik kustom juga dapat melakukan hal yang sama • `where Element == Int` membatasi tipe konkret tertentu • Kesesuaian retroaktif memerlukan `@retroactive` di Swift 5.7+ Berikutnya: persyaratan Self.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kesesuaian Bersyarat” gratis?

Ya — teks lengkap “Kesesuaian Bersyarat” 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 “Kesesuaian Bersyarat”?

Membuat tipe generik memenuhi protokol secara bersyarat menggunakan klausa where. 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 2 dari 4.

Berapa lama pelajaran “Kesesuaian Bersyarat” 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. Komposisi Protokol dengan &
  2. Kesesuaian Bersyarat
  3. Persyaratan Self dan Rancangan Equatable
  4. Prinsip Rancangan Berorientasi Protokol
← Kembali ke Swift Academy