Sobes.tech
Middle

Чӣ бояд кард, то сохтори корбар дар луғат калид шавад?

sobes.tech AI

Ҷавоб аз AI

Намуд аст, ки протокол Hashable иҷро карда шавад.

Протокол Hashable аз Equatable мерос мегирад.

  • Equatable: Талаб мекунад, ки оператори баробарии == барои муқоиса кардани ду намунаи структура иҷро шавад.
  • Hashable: Талаб мекунад, ки хосияти hash(into:) иҷро шавад, ки арзиши хешро барои намунаи структура ҳисоб мекунад.

Маслиҳат барои иҷро:

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)
    }
}

// Истифода дар луғат
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)]!)

Hasher барои тавлиди арзиши хеш истифода мешавад. Метод combine арзишҳои гуногуни хешшавандаро қабул мекунад ва онҳоро барои сохтани хеши ниҳоӣ ба ҳам мепайвандад.