0Pricing
Swift Academy · Pelajaran

Klausa where pada ekstensi

Gunakan where pada ekstensi type dan protocol untuk menambahkan API hanya saat batasan terpenuhi (misalnya, Array where Element: Equatable , Collection where Element == Int ).

Klausa where pada ekstensi adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 perluasan berbatasan?

Tambahkan API hanya ketika tipe memenuhi batasan dengan menggunakan where pada perluasan:

  • Perluasan tipe (misalnya, Array)
  • Perluasan protokol (misalnya, Collection)
  • Batasan pencocokan tepat (misalnya, Element == Int)

Perluasan tipe dengan batasan

Kaitkan metode ke Array hanya ketika Element-nya bersifat Equatable. Larik non-Equatable tidak akan melihat API ini.

extension Array where Element: Equatable {
    func removing(_ value: Element) -> [Element] {
        filter { $0 != value }
    }
    func containsAll(_ others: [Element]) -> Bool {
        others.allSatisfy(self.contains)
    }
}
print([1,2,3].removing(2))        // [1,3]
print(["a","b"].containsAll(["b"])) // true

Perluasan protokol dengan where

Perluasan protokol menambahkan API ke semua tipe yang sesuai ketika batasannya terpenuhi (di sini, setiap Collection dengan elemen Comparable).

extension Collection where Element: Comparable {
    var isSorted: Bool {
        // Pair each element with the next; ensure non-decreasing order
        zip(self, dropFirst()).allSatisfy(<=)
    }
}
print([1,2,3].isSorted)     // true
print([3,1,2].isSorted)     // false

Batasan pencocokan tepat

Gunakan batasan kesamaan untuk API yang ditargetkan, misalnya hanya ketika Element == Int. API ini tidak akan muncul untuk tipe elemen lain.

extension Collection where Element == Int {
    var sum: Int { reduce(0, +) }
    func average() -> Double {
        isEmpty ? 0 : Double(sum) / Double(count)
    }
}
print([1,2,3].sum)          // 6
print([1,2,3].average())    // 2.0

API berbasis kemampuan

Batasi berdasarkan kemampuan (protokol seperti Numeric, Hashable) untuk menyusun pembantu yang kuat dan dapat digunakan ulang.

extension Collection where Element: Numeric {
    var total: Element { reduce(0, +) }
}
extension Sequence where Element: Hashable {
    var uniques: [Element] {
        var seen = Set<Element>()
        return filter { seen.insert($0).inserted }
    }
}
print([1,2,2,3].uniques)    // [1,2,3]
print([1,2,3].total)        // 6

Catatan desain

Kiat:

  • Utamakan batasan minimal agar dapat digunakan kembali secara lebih luas.
  • Hindari ekstensi yang saling tumpang tindih dan mendefinisikan anggota yang sama; hal ini dapat membingungkan resolusi pemilihan fungsi berlebih.
  • Dokumentasikan asumsi (pengurutan, keunikan, ranah numerik).

Tujuan ekstensi terbatas

Pemeriksaan singkat: Apa yang dapat Anda lakukan dengan ekstensi terbatas?

Ringkasan

Ringkasan: Gunakan where pada ekstensi tipe/protokol untuk menargetkan API secara tepat—berdasarkan kemampuan (: Comparable) atau tipe persis (== Int)—sehingga kode tetap aman dan mudah ditemukan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Klausa where pada ekstensi” gratis?

Ya — teks lengkap “Klausa where pada ekstensi” 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 “Klausa where pada ekstensi”?

Gunakan where pada ekstensi type dan protocol untuk menambahkan API hanya saat batasan terpenuhi (misalnya, Array where Element: Equatable , Collection where Element == Int ). 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 3 dari 3.

Berapa lama pelajaran “Klausa where pada ekstensi” 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. Kepatuhan kondisional
  2. Batasan rekursif & generik tingkat tinggi
  3. Klausa where pada ekstensi
← Kembali ke Swift Academy