Junior — Middle
Welke beperkingen en vereisten bestaan er voor objecten om als elementen van hash-tabellen of hash-structuren in Swift te worden gebruikt?
sobes.tech AI
Antwoord van AI
In Swift, zodat een object kan worden gebruikt als element in een hash-tabel (bijvoorbeeld als sleutel in een woordenboek of element in een set), moet het voldoen aan het protocol Hashable.
Vereisten:
- Het object moet de methode
hash(into:)implementeren, die de waarden van de eigenschappen combineert om de hash te berekenen. - Het object moet de gelijkheid-operator
==implementeren (protocolEquatable) om de elementen correct te vergelijken.
Voorbeeld:
struct Person: Hashable {
var id: Int
var name: String
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.id == rhs.id
}
}
var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))
Dus, objecten moeten een stabiele en correct geïmplementeerde hash en vergelijking hebben om correct te functioneren in hash-structuren.