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 մեթոդը ընդունում է տարբեր հեշ-համատեղելի արժեքներ և միավորում դրանք՝ ստեղծելով վերջնական հեշը: