我正试图使我的结构卡符合协议Hashable(用于字典(,但由于某种原因,Xcode没有用红色错误对我大喊大叫,比如";类型"Card"不符合协议"Hashable"。我不明白为什么。我希望Xcode添加协议存根。
import Foundation
struct Card : Hashable {
var isFaceUp = false
var isMatched = false
var identifier : Int
private static var identifierFactory = 0
private static func getUniqueIdentifier() -> Int {
Card.identifierFactory += 1
return Card.identifierFactory
}
init() {
identifier = Card.getUniqueIdentifier()
}
}
由于Hashable
协议是在结构体Card
上自动合成的,因此它没有显示任何错误,表明您需要添加协议存根以符合它。因此,添加Hashable
协议一致性不需要任何额外的代码。
如果出于某种原因想要覆盖默认实现,可以通过执行以下操作来实现。
struct Card: Hashable {
//...
func hash(into hasher: inout Hasher) {
hasher.combine(identifier) // combine any hashable you like
}
}