我正在尝试实现符合Hashable协议的通用结构。
struct strA<T: Equatable>:Hashable, CustomStringConvertible {
private(set) var key: String
private(set) var value: T
private(set) var timeStamp: NSDate
init(leafKey key:String, leafValue value:T){
self.key = key
self.value = value
self.timeStamp = NSDate()
}
var description: String {
return "\(self.key): \(self.value)"
}
var hashValue: Int {
return self.key.hashValue
}
}
func == (lhs: strA, rhs: strA) -> Bool {
return lhs.key == rhs.key
}
我必须使struct符合协议Hashable,因为它进入一个数组,并且它是泛型的,因为该值可以是任何Equatable类型。 (我没有使用&#39;任何&#39;在这里因为几乎所有东西都会使用。)
我如何继续处理这种情况,还是有其他方法可以解决这个问题?
P.S。这不是一个重复的问题。
答案 0 :(得分:2)
因为strA
是通用的,所以等式方法也必须是通用的。
func ==<T>(lhs: strA<T>, rhs: strA<T>) -> Bool {
return lhs.key == rhs.key
}
-
附注:所有类型都应以大写字母开头。因此,StrA
不是strA
。