gpt4 book ai didi

swift - 在可哈希类中自动实现唯一 ID

转载 作者:可可西里 更新时间:2023-10-31 23:55:23 25 4
gpt4 key购买 nike

我创建了一个新类,我希望它是 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,它只是一个设置属性,不需要获取,因为它应该对使用该类的人完全透明。

但是每次我尝试将 uid 更改为 static varclass var 时,我都无法使其符合 Hashable 协议(protocol)

提前致谢

最佳答案

不确定那是你想要的,但万一你创建“uid”属性的唯一原因是模拟一种引用相等而不是值相等(你可能是,因为你使用的是类而不是结构),您可能还想看看:

var hashValue: Int { 
return ObjectIdentifier(self).hashValue
}

关于swift - 在可哈希类中自动实现唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30950756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com