Middle
Swift dilinde sözlükteki değerler nasıl karşılaştırılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Swift'te sözlükleri karşılaştırmak için == ve != eşitlik operatörleri kullanılır. Anahtar-değer çiftleri karşılaştırılır. == operatörü ile sözlükleri karşılaştırmak başarılı olabilmesi için, hem anahtarların hem de değerlerin Equatable protokolünü uygulaması gerekir.
Aşağıdaki yönler karşılaştırılır:
- Eleman sayısı: Sözlükler aynı sayıda anahtar-değer çifti içermelidir.
- Anahtarlar: Her iki sözlükteki anahtarlar kümesi eşleşmelidir.
- Değerler: Aynı anahtarlara bağlı değerler eşit olmalıdır.
Karşılaştırma örneği:
let dict1: [String: Int] = ["a": 1, "b": 2]
let dict2: [String: Int] = ["a": 1, "b": 2]
let dict3: [String: Int] = ["a": 1, "c": 3]
let dict4: [String: Int] = ["a": 1, "b": 3]
let isEqual1_2 = dict1 == dict2 // true
let isEqual1_3 = dict1 == dict3 // false (farklı anahtarlar)
let isEqual1_4 = dict1 == dict4 // false ("b" anahtarına ait farklı değerler)
let isNotEqual1_3 = dict1 != dict3 // true
Eğer anahtarlar veya değerler Equatable protokolünü uygulamayan türleri içeriyorsa, == ile karşılaştırma girişimi derleme hatasına yol açar.
Özel türlerle sözlükleri karşılaştırma örneği:
struct User {
let id: Int
let name: String
}
struct Product: Equatable {
let id: Int
let name: String
// `Product` için `Equatable` uygulaması
static func == (lhs: Product, rhs: Product) -> Bool {
return lhs.id == rhs.id && lhs.name == rhs.name
}
}
// User ile sözlük (`Equatable` değil) - karşılaştırma sırasında derleme hatası verir
// let users1: [Int: User] = [1: User(id: 1, name: "Alice")]
// let users2: [Int: User] = [1: User(id: 1, name: "Alice")]
// let isEqualUsers = users1 == users2 // Derleme hatası
// Product ile sözlük (`Equatable`)
let products1: [Int: Product] = [1: Product(id: 1, name: "Apple"), 2: Product(id: 2, name: "Banana")]
let products2: [Int: Product] = [1: Product(id: 1, name: "Apple"), 2: Product(id: 2, name: "Banana")]
let products3: [Int: Product] = [1: Product(id: 1, name: "Apple"), 2: Product(id: 3, name: "Cherry")]
let isEqualProducts1_2 = products1 == products2 // true
let isEqualProducts1_3 = products1 == products3 // false
Eğer Equatable olmayan türleri içeren sözlükleri karşılaştırmak istiyorsanız, kendi karşılaştırma mantığınızı uygulamanız gerekir, bu da sözlükteki öğeleri manuel olarak dolaşmayı içerir.