Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
362 views
in Technique[技术] by (71.8m points)

swift - Why Hashable protocol forces variable to be comply with Equatable protocol?

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?

question from:https://stackoverflow.com/questions/65939663/why-hashable-protocol-forces-variable-to-be-comply-with-equatable-protocol

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...