问题描述
在某些情况下和某些代码中,我看到 hashValue
用于将 Bool
转换为 Int
.
In some cases and some code I saw that hashValue
is used to convert Bool
to 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来获得同样的结果.
I use XCode 10.0 beta 2 (10L177m), MacOS High Sierra with Swift 4.2. I can switch to Swift 4.0 to gain likewise results.
现在,我做错了什么吗?还是 hashValue
没有可靠的转换方法?
Now, is there something I do wrong or is hashValue
no reliable conversion method?
推荐答案
否, hashValue
不是将其他类型转换为 Int
的正确方法,尤其是在您想要特定的结果.
No, hashValue
is not a proper way to convert some other type to an Int
, especially if you want specific results.
来自 Hashable hashValue
的文档:
将 Bool
转换为 Int
的最简单解决方案是:
The simplest solution to convert a Bool
to Int
is:
let someInt = someBool ? 1 : 0
这篇关于是否可以将Bool.hashValue转换为Int?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!