在某些情况下和一些代码我看到hashValue
用于转换Bool
to Int
.
然而,代码
let someValue = true
let someOtherValue = false
print(someValue.hashValue)
print(someOtherValue.hashValue)
让我得到输出
-5519895559129191040
7814522403520016984
我希望1
and 0
, 尽管。
我使用 XCode 10.0 beta 2 (10L177m)、MacOS High Sierra 和 Swift 4.2。我可以切换到 Swift 4.0 以获得同样的结果。
现在,我是否做错了什么或者是hashValue
没有可靠的转换方法吗?
No, hashValue
不是将其他类型转换为类型的正确方法Int
,特别是如果您想要特定的结果。
从文档中Hashable hashValue
:
不保证程序的不同执行过程中的哈希值相等。不要保存哈希值以供将来执行时使用。
最简单的解决方案是转换Bool
to Int
is:
let someInt = someBool ? 1 : 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)