Sobes.tech
Middle

Mit kell tenni ahhoz, hogy a felhasználói struktúra kulcs legyen a szótárban?

sobes.tech MI

Válasz az MI-től

A Hashable protokoll implementálása szükséges.

A Hashable protokoll öröklődik az Equatable-től.

  • Equatable: Megköveteli az egyenlőség operátor == implementálását két példány összehasonlításához.
  • Hashable: Megköveteli a hash(into:) tulajdonság implementálását, amely kiszámítja az példány hash értékét.

Implementációs példa:

struct Coordinate: Hashable {
    let x: Int
    let y: Int

    // MARK: - Equatable
    static func == (lhs: Coordinate, rhs: Coordinate) -> Bool {
        return lhs.x == rhs.x && lhs.y == rhs.y
    }

    // MARK: - Hashable
    func hash(into hasher: inout Hasher) {
        hasher.combine(x)
        hasher.combine(y)
    }
}

// Használat szótárban
let coordinatesDictionary: [Coordinate: String] = [
    Coordinate(x: 0, y: 0): "Origin",
    Coordinate(x: 1, y: 1): "Point (1,1)"
]

print(coordinatesDictionary[Coordinate(x: 0, y: 0)]!)

A Hasher a hash érték generálására szolgál. A combine metódus különböző hash-olható értékeket fogad és összefűzi őket, hogy létrehozza a végső hash értéket.