In Objective-C (und anderen Sprachen) sein könnte, eine relativ gute Standardimplementierung von - (NSUInteger)hash
Schreiben:eine gute Hashable Implementierung in Swift
- (NSUInteger)hash {
return 31u * [self.property1 hash] + [self.property2 hash];
}
beid property1
und property2
Rückkehr für hash
gute Werte Unter der Annahme.
Dies funktioniert nicht in Swifts äquivalenter var hashValue: Int
-Methode, die auf dem Hashable
-Protokoll definiert ist.
Der entsprechende Swift-Code wird wahrscheinlich überlaufen und dies ist ein Laufzeitfehler in Swift.
Also meine Frage ist, was ist die beste Technik zum Generieren von Hashwerten (Hashable implementieren) in Swift? Sollte ich nur XOR benutzen? Obwohl mein Verständnis ist, dass XOR ist nicht ideal für die Erstellung von einheitlichen Hash-Verteilungen. Vielleicht etwas exotischer?
Sie nicht abstürzen einfach verwenden könnte Die Überlaufoperatoren (& + und & *) erlauben Integer-Überläufe in Ihrer Hash-Berechnung. https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/AdvancedOperators.html –
Guter Punkt. Ich muss das Swift-Buch zu Ende lesen. ;) – orj
Vielleicht möchten Sie Ihre Frage bearbeiten. HashValue ist keine Funktion. Stattdessen ist es eine berechnete Eigenschaft. – pohl