Swift: хэш-значение enum получает случайные числа - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующее перечисление:

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

Мой вопрос к вам, ребята, почему я получаю случайныйцифры?

Буду очень признателен за вашу помощь.

1 Ответ

0 голосов
/ 29 сентября 2018

Ответ на этот вопрос хорошо документирован. hashValue

Краткий ответ: это нормальное поведение.

Значения хеша не гарантируютсябыть равным в разных исполнениях вашей программы.Не сохраняйте хеш-значения для использования во время будущего выполнения

Должен ли я получить что-то подобное?

This is the hash value of One 0

Нет.HashValue отличается от RawValue.Если вы хотите, чтобы в ваших случаях перечисления rawValue начинался с 0, вам нужно объявить тип перечисления как Int.Кроме того, обратите внимание, что в соответствии с соглашением Swift об именовании имена перечислений начинаются со строчной буквы:

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

TestEnum.one.rawValue  // 0
TestEnum.two.rawValue  // 1
TestEnum.three.rawValue  // 2
...