在某些情况下和一些代码我看到hashValue
用于将Bool
转换为Int
。
但是,代码
let someValue = true
let someOtherValue = false
print(someValue.hashValue)
print(someOtherValue.hashValue)
得到我的输出
-5519895559129191040
7814522403520016984
不过我会期待1
和0
。
我使用XCode 10.0 beta 2(10L177m),MacOS High Sierra和Swift 4.2。我可以切换到Swift 4.0以获得同样的结果。
现在,有什么我做错了或hashValue
没有可靠的转换方法?
不,hashValue
不是将其他类型转换为Int
的正确方法,特别是如果你想要特定的结果。
从Hashable hashValue
的文档:
在程序的不同执行中,哈希值不保证相等。不要保存在将来执行期间使用的哈希值。
将Bool
转换为Int
最简单的解决方案是:
let someInt = someBool ? 1 : 0