实现符合Hashable协议的通用结构。错误:参考通用类型' strA'需要< ...>中的参数错误

时间:2016-07-11 09:56:36

标签: swift generics struct swift2

我正在尝试实现符合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
}

我在执行相等方法时遇到编译错误。 enter image description here

我必须使struct符合协议Hashable,因为它进入一个数组,并且它是泛型的,因为该值可以是任何Equatable类型。 (我没有使用&#39;任何&#39;在这里因为几乎所有东西都会使用。)

我如何继续处理这种情况,还是有其他方法可以解决这个问题?

P.S。这不是一个重复的问题。

1 个答案:

答案 0 :(得分:2)

因为strA是通用的,所以等式方法也必须是通用的。

func ==<T>(lhs: strA<T>, rhs: strA<T>) -> Bool {
    return lhs.key == rhs.key
}

-

附注:所有类型都应以大写字母开头。因此,StrA不是strA