Sobes.tech
Junior — Middle

Jak zaimplementować użycie niestandardowych obiektów jako kluczy podczas pracy ze słownikami?

sobes.tech AI

Odpowiedź od AI

Aby używać niestandardowych obiektów jako kluczy w słownikach (np. w Swift Dictionary), te obiekty muszą spełniać protokoły Hashable i Equatable.

Oznacza to, że klasa lub struktura musi zaimplementować metody do obliczania wartości hash i sprawdzania równości obiektów.

Przykład w Swift:

struct User: Hashable {
    let id: Int
    let name: String

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

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

var dict: [User: String] = [:]
let user1 = User(id: 1, name: "Alice")
dict[user1] = "Admin"

W tym przykładzie kluczem słownika jest obiekt User, jednoznacznie identyfikowany przez id. Implementacja hash(into:) i == pozwala na poprawne przechowywanie i wyszukiwanie obiektów w słowniku.