Otomatik Oluşturulan Equatable
== desteğini ücretsiz edinin ve gerektiğinde özelleştirin.
Otomatik Oluşturulan Equatable, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. 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 4 dersten oluşur.
Eşitlenebilir Nedir?
Equatable, bir türe == operatörünü sağlayan protokoldür. Uyumluluk sağlamak, iki değeri eşitlik açısından karşılaştırmanıza ve bunları contains, firstIndex ve daha fazlasıyla kullanmanıza olanak tanır.
Otomatik Uyumluluk
Saklanan özelliklerinin tümü eşitlenebilir olan bir yapı için Swift, otomatik olarak oluşturur: Yalnızca uyumluluğu bildirmeniz yeterlidir:
struct Point: Equatable {
let x: Int
let y: Int
}
print(Point(x: 1, y: 2) == Point(x: 1, y: 2)) // true
print(Point(x: 1, y: 2) == Point(x: 9, y: 2)) // falseOtomatik Oluşturma Nasıl Çalışır?
Oluşturulan ==, saklanan her özellik çiftini karşılaştırır. Değerlerin eşit olması için tüm çiftlerin eşit olması gerekir:
struct User: Equatable {
let name: String
let age: Int
}
let a = User(name: "Ann", age: 30)
let b = User(name: "Ann", age: 31)
print(a == b) // false (age differs)Koleksiyonlarda == Kullanımı
Eşitlenebilirlik, birçok dizi işleminin kullanılmasını sağlar:
struct Tag: Equatable { let name: String }
let tags = [Tag(name: "a"), Tag(name: "b")]
print(tags.contains(Tag(name: "b"))) // true
print(tags.firstIndex(of: Tag(name: "a"))!) // 0Numaralandırmalar da Eşitlenebilirdir
Numaralandırmalar için de Equatable otomatik olarak oluşturulur. İlişkili değerleri olmayan numaralandırmalar, uyumluluk bildirilmeden de eşitlenebilirdir; ilişkili değerleri varsa uyumluluğu bildirmeniz gerekir ve bu değerler de karşılaştırılır.
İlişkili Değerlere Sahip Eşitlenebilir Numaralandırma
İlişkili değerler karşılaştırmaya katılır:
enum Status: Equatable {
case active
case error(code: Int)
}
print(Status.error(code: 404) == Status.error(code: 404)) // true
print(Status.error(code: 404) == Status.error(code: 500)) // falseİç İçe Türler
Otomatik oluşturma birleştirilerek çalışır: Eşitlenebilir üyeler içeren bir yapı da otomatik olarak oluşturulabilir:
struct Line: Equatable {
let start: Int
let end: Int
}
struct Shape: Equatable {
let lines: [Line]
}
print(Shape(lines: [Line(start: 0, end: 1)]) == Shape(lines: [Line(start: 0, end: 1)])) // trueOtomatik Oluşturma Başarısız Olduğunda
Saklanan özelliklerden herhangi biri eşitlenebilir değilse otomatik oluşturma kullanılamaz ve == operatörünü kendiniz yazmanız gerekir (bu konu daha sonra ele alınacaktır):
struct Box: Equatable {
let id: Int
static func == (l: Box, r: Box) -> Bool { l.id == r.id }
}
print(Box(id: 1) == Box(id: 1)) // trueSınıflar Otomatik Olarak Oluşturulmaz
Başvuru türleri, otomatik olarak oluşturulan == operatörünü almaz; bunu kendiniz uygulamanız gerekir (kimliği veya alanları karşılaştırarak):
final class Account: Equatable {
let id: Int
init(id: Int) { self.id = id }
static func == (l: Account, r: Account) -> Bool { l.id == r.id }
}
print(Account(id: 7) == Account(id: 7)) // true!= Ücretsiz Olarak Gelir
== var olduğunda, != otomatik olarak onun değili şeklinde türetilir:
struct Color: Equatable { let hex: String }
print(Color(hex: "#fff") != Color(hex: "#000")) // trueGenel Kodda Eşitlenebilirlik
Eşitlenebilirlik, genel işlevlerin öğeleri karşılaştırmasını sağlar; birçok algoritma bunu gerektirir:
func allSame<T: Equatable>(_ xs: [T]) -> Bool {
guard let first = xs.first else { return true }
return xs.allSatisfy { $0 == first }
}
print(allSame([2, 2, 2])) // true
print(allSame(["a", "b"])) // falseHızlı Kontrol
Equatable uyumluluğunu bildirdiğinizde Swift, hangi tür için == operatörünü otomatik olarak oluşturur?
Özet
Eşitlenebilirliği öğrendiniz:
Equatable,==operatörünü (ve ücretsiz!=operatörünü) sağlar- Eşitlenebilir üyelere sahip yapılar ve numaralandırmalar için
==otomatik olarak oluşturulur contains,firstIndex(of:)vb. işlemleri etkinleştirir- Sınıflar ve eşitlenebilir olmayan üyeler, elle yazılmış bir
==gerektirir
Sıradaki konu: Hashable.
Sıkça Sorulan Sorular
“Otomatik Oluşturulan Equatable” dersi ücretsiz mi?
Evet — “Otomatik Oluşturulan Equatable” 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 4 dersten oluşur.
“Otomatik Oluşturulan Equatable” dersinde ne öğreneceğim?
== desteğini ücretsiz edinin ve gerektiğinde özelleştirin. 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, 4 dersinin 1. dersidir.
“Otomatik Oluşturulan Equatable” 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
- Otomatik Oluşturulan Equatable
- Hashable ve hash(into:)
- Comparable ve Sıralama
- Özel Eşitlik Anlamı