Sobes.tech
Junior — Middle

Swift, hash çakışması durumunda iki nesne arasındaki farkı nasıl belirler?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'te, nesneleri karşılaştırmak ve karma çakışmalarını çözmek için isEqual(_:) yöntemi kullanılır. İki nesne aynı hash'e sahipse (çakışma), sistem ek olarak bu yöntemi çağırır ve nesnelerin gerçekten eşit olup olmadığını kontrol eder.

İşlem:

  1. Nesnenin hash değeri hash(into:) kullanılarak hesaplanır.
  2. Eğer iki nesnenin hash değeri aynıysa, kesin karşılaştırma için isEqual(_:) çağrılır.
  3. Eğer isEqual(_:) true dönerse, nesneler eşit kabul edilir, aksi takdirde farklıdır.

Bu, Set gibi koleksiyonlar veya sözlük anahtarlarıyla, hash çakışmaları olsa bile doğru çalışmayı sağlar.

Uygulama örneği:

class Person: Hashable {
    let id: Int
    let name: String

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }

    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.id == rhs.id && lhs.name == rhs.name
    }
}

Burada, iki Person nesnesinin hash değeri aynıysa (örneğin, aynı id), final karşılaştırma için == operatörü çağrılır.