我创建了一个新类,我希望它是 Hashable 和 Equatable,这样我就可以轻松地遍历它,下面是一个类示例:
class MyClass: Hashable {
var uid: Int
var myName: String
var myAge:Int
var hashValue: Int {
return self.uid
}
init(uid: Int, name: String, age: Int) {
self.uid = uid
self.myName = name
self.myAge = age
}
}
func ==(lhs: MyClass, rhs: MyClass) -> Bool {
return lhs.uid == rhs.uid
}
问题是现在我必须在创建类时传递一个 uid,如下所示:
let user1 = MyUser(uid: 1, name: "Me", age: 36)
我想让 uid 静态并为我创建的每个对象自动生成一个新的,如下所示:
let user2 = User(name: "The other guy", age: 23)
在这种情况下,user2 的 uid 将等于 2,它只是一个不需要获取的 set 属性,因为它应该对使用该类的人完全透明。
但是,每次我尝试将 uid 更改为 astatic var
或 aclass var
时,我都无法使其符合Hashable protocol
提前致谢