0
考慮這個結構散列值具有不同特性的兩個對象是同一
struct Node : Hashable {
let value : Int
let i : Int
let j : Int
init(withValue val : Int, position : (Int,Int)){
value = val
self.i = position.0
self.j = position.1
}
var hashValue: Int {
return "\(value),\(i),\(j)".hashValue
}
}
我==
操作
func ==(left: Node, right: Node) -> Bool {
return left.hashValue == right.hashValue
}
當我創建2個節點:
let node1 = Node(withValue: 1260, position: (8,694))
let node2 = Node(withValue: 33, position: (257,286))
並加以比較:
node1 == node2 //true ???
爲什麼hashValue
函數無法按預期工作?
它應該以不同的方式實施嗎?
反問題:如果是,那麼爲這種對象計算hashValue的正確方法是什麼?
更多信息
當我調試此:
(lldb) po node1.hashValue
4799450060528192039
(lldb) po node2.hashValue
4799450060528192039
哪裏是你的init方法? –
對不起,忘了複製:D現在加入! – prad
http://stackoverflow.com/questions/31438210/how-to-implement-the-hashable-protocol-in-swift-for-an-int-array-a-custom-strin – oremag14jf