通过其哈希值访问枚举值?
通过其哈希值访问枚举值?
枚举具有一个名为 \'hashValue\' 的属性,它是枚举内部的索引。
现在我的问题是,是否可以通过使用数字访问它的值? 例如:let variable:AnEnum = 0
admin 更改状态以发布 2023年5月22日
enum Opponent: String { case Player case Computer static func fromHashValue(hashValue: Int) -> Opponent { if hashValue == 0 { return .Player } else { return .Computer } }
}
解释:
由于无法从其哈希值获取枚举值,因此必须手动执行此操作。虽然不太美观,但它可以工作。您基本上创建一个函数,使您能够传递要获取的值的索引,并手动将该枚举值返回给调用者。如果枚举具有大量情况,这可能会变得非常复杂,但对于我而言,它像魔术一样起作用。
如果你想将枚举值映射到整数,你应该直接使用原始值。例如 (来自Swift 编程语言:枚举):
enum Planet: Int { case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune } let possiblePlanet = Planet(rawValue: 7)
我不相信有文档承诺枚举的哈希值是特定的任何内容(如果你有链接,我将非常感兴趣)。在缺乏这一点的情况下,你应该明确你的原始值分配。