Reputation: 432
My confusion starts with the below code.
class Student : Hashable {
func hash(into hasher: inout Hasher) {
hasher.combine(firstName)
hasher.combine(lastName)
hasher.combine(stateName)
hasher.combine(villageName)
}
var firstName: String?
var lastName: String?
var stateName: String?
var villageName: String?
}
So far as my knowledge on Hashable, it makes the variable uniquely identifiable by mapping it to some key, However, I don't foresee any reason which should force the variable to be equatable always. If there is no comparison operation to be done in the class created above then it looks un-necessary to put an extra protocol "Equatable"? Is there any reason which I could not visualize?
Upvotes: 0
Views: 185
Reputation: 49590
Because any use of hashing to locate objects (e.g. in a Dictionary
) needs to handle hashing collisions - that is when different (unequal) objects have the same hash value.
When that happens, there needs to be a way to check objects for equality.
Upvotes: 4