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 арзишҳои гуногуни хешшавандаро қабул мекунад ва онҳоро барои сохтани хеши ниҳоӣ ба ҳам мепайвандад.