1

我有以下枚举:

enum MyEnum {
    case One
    case Two
    case Three
}

但是当我打印这一行时:

print("This is the hash value of One \(MyEnum.One.hashValue)")

我得到以下输出:

This is the hash value of One -7827947590157343570

如果我重新运行我得到的代码:

This is the hash value of One 7980945707037922449

我应该得到这样的东西:这是 One 0 的哈希值

我问你们为什么我得到随机数?

我会非常感谢你的帮助。

4

1 回答 1

0

这个问题的答案是有据可查的hashValue

简短的回答是,这是正常行为。

不保证哈希值在程序的不同执行中是相等的。不要保存哈希值以在未来执行期间使用

我应该得到这样的东西吗?

This is the hash value of One 0

No.HashValue不同于RawValue. 如果您希望您的枚举案例有一个从 0 开始的 rawValue,您需要将您的枚举类型声明为 Int。顺便说一句,以小写字母开头的枚举案例命名是 Swift 命名约定:

enum TestEnum: Int {
    case one
    case two
    case three
}

TestEnum.one.rawValue  // 0
TestEnum.two.rawValue  // 1
TestEnum.three.rawValue  // 2
于 2018-09-29T01:50:35.633 回答