0Pricing
Swift Academy · Ders

Hashable/Equatable/Comparable türetimleri

Basit struct/enum'lar için Swift'in Equatable/Hashable (ve Codable) uygulamalarını synthesize etmesine izin verin; gerektiğinde özel Comparable (sözlüksel) ve manuel hash(into:) uygulayın.

Hashable/Equatable/Comparable türetimleri, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 3. 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.

Neler otomatik oluşturulur?

Swift, basit türler için yaygın uyumlulukları otomatik olarak oluşturabilir:

  • Equatable: değer eşitliği
  • Hashable: sözlük/küme anahtarları
  • Codable: kodlama/kod çözme

Comparable uyumluluğunu kendiniz (sözlükbilimsel sırayla) uygulayın veya uygun olduğunda enum durumlarının sırasına güvenin.

Yapılar için otomatik oluşturma

Depolanan özellikleri Equatable/Hashable olan yapılar için Swift her ikisini de otomatik olarak oluşturur.

struct Point: Equatable, Hashable {
    var x: Int
    var y: Int
    // No extra code: Equatable & Hashable are synthesized
}
let p1 = Point(x: 1, y: 2)
let p2 = Point(x: 1, y: 2)
print(p1 == p2)                 // true
let set: Set<Point> = [p1, p2]  // Hashable works; duplicates coalesce
print(set.count)                // 1

Enum'lar için Comparable

İlişkili değerleri olmayan bir enum, durum sırasına göre Comparable uyumluluğunu otomatik olarak kazanabilir.

enum Priority: Comparable { case low, medium, high }
// Comparable is synthesized using case order: low < medium < high
print(Priority.low < .high)  // true

Yapılar için Comparable

Yapılar için < işlemini elle yazın. Basit bir sözlükbilimsel karşılaştırma (önce last, sonra first) yaygındır.

struct Person: Comparable, Hashable {
    let last: String
    let first: String
    static func < (lhs: Person, rhs: Person) -> Bool {
        if lhs.last != rhs.last { return lhs.last < rhs.last }
        return lhs.first < rhs.first
    }
}
let a = Person(last: "Doe", first: "Ana")
let b = Person(last: "Doe", first: "Max")
print(a < b)   // true (Ana before Max)

Özel eşitlik ve özetleme

Eşitlik veya özet değeri biçimlendirmeyi (ör. büyük/küçük harf ve boşlukları) yok saymalıysa == ve hash(into:) işlemlerini yazın.

struct FileID: Hashable, Equatable {
    let path: String
    // Normalize case/trim when hashing & comparing
    static func == (l: FileID, r: FileID) -> Bool {
        l.path.lowercased().trimmingCharacters(in: .whitespaces) ==
        r.path.lowercased().trimmingCharacters(in: .whitespaces)
    }
    func hash(into hasher: inout Hasher) {
        hasher.combine(path.lowercased().trimmingCharacters(in: .whitespaces))
    }
}
let f1 = FileID(path: " Readme.md ")
let f2 = FileID(path: "readme.md")
print(f1 == f2)                 // true
print(Set([f1, f2]).count)      // 1

En iyi yöntemler

İpuçları:

  • == ile hash(into:) işlemlerini tutarlı tutun: eşit değerlerin özetleri de eşit olmalıdır.
  • Önce otomatik oluşturmayı tercih edin; yalnızca özel anlamlar gerektiğinde elle uygulayın.
  • Comparable için sıralama kurallarını belgeleyin.
  • Basit ve sıralı bir ölçek uygunsa yük taşımayan enum'ları kullanın.

Otomatik oluşturma kontrol listesi

Hızlı kontrol: Swift basit yapılar ve enum'lar için neleri otomatik olarak oluşturabilir?

Özet

Özet: Basit modeller için Equatable/Hashable (ve Codable) uyumluluklarını Swift'in otomatik olarak oluşturmasına izin verin. Comparable uyumluluğunu açık sözlükbilimsel kurallarla uygulayın veya mümkün olduğunda enum durumlarının sırasına güvenin.

Sıkça Sorulan Sorular

“Hashable/Equatable/Comparable türetimleri” dersi ücretsiz mi?

Evet — “Hashable/Equatable/Comparable türetimleri” 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.

“Hashable/Equatable/Comparable türetimleri” dersinde ne öğreneceğim?

Basit struct/enum'lar için Swift'in Equatable/Hashable (ve Codable) uygulamalarını synthesize etmesine izin verin; gerektiğinde özel Comparable (sözlüksel) ve manuel hash(into:) uygulayı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 3. dersidir.

“Hashable/Equatable/Comparable türetimleri” 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