Swift Academy · Ders

Alt simgeler ve özel dizinlere yeniden bakış

get / set ile alt simgeler tanımlayın, birden çok parametre kabul edin (ör. 2B matris) ve okunabilir API'ler için custom index types (enum'lar) kullanın.

2. ders / 38 adım

Alt simgeler ve özel dizinlere yeniden bakış, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 3 dersten oluşur.

Alt indisler nedir?

Alt indisler, örneklerin diziler gibi indislenmesini sağlar. Şunları yapabilirsiniz:

  • Salt okunur veya okuma–yazma erişimi sunmak
  • Birden çok parametre kabul etmek (ör. satır/sütun)
  • Açıklık için enum gibi özel indisler kullanmak

Salt okunur alt indis

Bir alt indis, set kullanmadan değer döndürerek salt okunur olabilir.

struct TimesTable {
    let multiplier: Int
    subscript(index: Int) -> Int { multiplier * index } // read-only
}
let t = TimesTable(multiplier: 3)
print(t[4]) // 12

get/set ile okuma–yazma

Okuma–yazma erişimi için get/set ekleyin. Çökmeleri önlemek için indisleri denetleyin.

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)

İki boyutlu indeksleme

Alt indisler birden çok parametre alabilir ve açıklık için etiketler kullanabilir (ör. 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]) // 5

Özel indis (enum)

Amacı açıkça belirtmek için özel indisler kullanın: Bir enum, API'yi ifade gücünü koruyacak şekilde depolamayla eşleyebilir.

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])

Tasarım ipuçları

İpuçları:

  • Öğe erişimi için alt indisleri, işlemler için yöntemleri tercih edin.
  • İndisleri doğrulayın (assert/precondition veya güvenli optional değerleri kullanın).
  • Çok eksenli erişim için parametreleri adlandırın.
  • Alt indisleri hızlı ve öngörülebilir tutun.

Okuma–yazma tanımı

Hızlı kontrol: Okuma–yazma alt indisini hangisi tanımlar?

Özet

Özet: Salt okunur ve okuma–yazma alt indisleri oluşturun, matrisler gibi birden çok parametre kabul edin ve okunabilirlik ile güvenlik için özel indisleri (enum'ları) tercih edin.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Swift öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
122
Dersler
409

Sıkça Sorulan Sorular

“Alt simgeler ve özel dizinlere yeniden bakış” dersi ücretsiz mi?

Evet — “Alt simgeler ve özel dizinlere yeniden bakış” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 3 dersten oluşur.

“Alt simgeler ve özel dizinlere yeniden bakış” dersinde ne öğreneceğim?

get / set ile alt simgeler tanımlayın, birden çok parametre kabul edin (ör. 2B matris) ve okunabilir API'ler için custom index types (enum'lar) kullanın. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.

“Alt simgeler ve özel dizinlere yeniden bakış” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Operatör aşırı yükleme ve öncelik grupları
  2. Alt simgeler ve özel dizinlere yeniden bakış
  3. Hashable/Equatable/Comparable türetimleri
← Swift Academy Sayfasına Dön