Subscript & indeks khusus, ditinjau kembali
Definisikan subscript dengan get / set , terima beberapa parameter (misalnya matriks 2D), dan gunakan custom index types (enum) untuk API yang mudah dibaca.
Subscript & indeks khusus, ditinjau kembali adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.
Apa itu subskrip?
Subskrip memungkinkan instans diakses berdasarkan indeks seperti larik. Anda dapat:
- Menyediakan akses hanya-baca atau baca-tulis
- Menerima beberapa parameter (misalnya, baris/kolom)
- Menggunakan indeks khusus seperti enumerasi agar lebih jelas
Subskrip hanya-baca
Subskrip dapat bersifat hanya-baca dengan mengembalikan nilai tanpa set.
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int { multiplier * index } // read-only
}
let t = TimesTable(multiplier: 3)
print(t[4]) // 12Baca-tulis dengan get/set
Tambahkan get/set untuk menyediakan akses baca-tulis. Lindungi indeks agar tidak terjadi kerusakan program.
struct SafeArray<T> {
private var storage: [T]
init(_ xs: [T]) { self.storage = xs }
subscript(i: Int) -> T? {
get { (0..<storage.count).contains(i) ? storage[i] : nil }
set {
guard let v = newValue, (0..<storage.count).contains(i) else { return }
storage[i] = v
}
}
}
var s = SafeArray([10,20,30])
print(s[1] ?? -1) // 20
s[1] = 99
print(s[1] ?? -1) // 99
s[5] = 7 // ignored (out of range)Pengindeksan 2D
Subskrip dapat menerima beberapa parameter dan menggunakan label agar lebih jelas (misalnya, row/col).
struct Matrix {
let rows: Int, cols: Int
private var grid: [Int]
init(_ r: Int, _ c: Int, fill: Int = 0) {
rows = r; cols = c; grid = Array(repeating: fill, count: r * c)
}
private func valid(_ r: Int, _ c: Int) -> Bool { r >= 0 && r < rows && c >= 0 && c < cols }
subscript(row r: Int, col c: Int) -> Int {
get { precondition(valid(r,c), "Index out of range"); return grid[r*cols + c] }
set { precondition(valid(r,c), "Index out of range"); grid[r*cols + c] = newValue }
}
}
var m = Matrix(2, 3)
m[row: 0, col: 1] = 5
print(m[row: 0, col: 1]) // 5Indeks khusus (enumerasi)
Gunakan indeks khusus agar maksudnya jelas: enumerasi dapat dipetakan ke penyimpanan sekaligus menjaga API tetap ekspresif.
enum Day: Int, CaseIterable { case mon = 0, tue, wed, thu, fri, sat, sun }
struct Week {
private var tasks = Array(repeating: "—", count: Day.allCases.count)
subscript(day: Day) -> String {
get { tasks[day.rawValue] }
set { tasks[day.rawValue] = newValue }
}
}
var w = Week()
w[.wed] = "Ship"
print(w[.wed])Kiat desain
Kiat:
- Utamakan subskrip untuk akses elemen; gunakan metode untuk tindakan.
- Validasi indeks (penegasan/prasyarat atau nilai opsional yang aman).
- Beri nama parameter untuk akses multi-sumbu.
- Jaga agar subskrip tetap cepat dan perilakunya dapat diprediksi.
Deklarasi baca-tulis
Pemeriksaan singkat: Manakah yang mendeklarasikan subskrip baca-tulis?
Ringkasan
Ringkasan: Buat subskrip hanya-baca dan baca-tulis, terima beberapa parameter (seperti matriks), dan utamakan indeks khusus (enumerasi) demi keterbacaan dan keamanan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Subscript & indeks khusus, ditinjau kembali” gratis?
Ya — teks lengkap “Subscript & indeks khusus, ditinjau kembali” 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 “Subscript & indeks khusus, ditinjau kembali”?
Definisikan subscript dengan get / set , terima beberapa parameter (misalnya matriks 2D), dan gunakan custom index types (enum) untuk API yang mudah dibaca. 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 3.
Berapa lama pelajaran “Subscript & indeks khusus, ditinjau kembali” 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
- Overloading operator & kelompok precedence
- Subscript & indeks khusus, ditinjau kembali
- Derivasi Hashable/Equatable/Comparable