【发布时间】:2017-02-24 21:15:03
【问题描述】:
在 Swift 2.x 中我相信我可以做到:
let number = 1
let result = Bool(number)
print(result) // prints out: true
但自从 Swift 3 以来,我一直无法做到这一点,它给了我错误:
无法使用参数列表为“Bool”类型调用初始化程序 输入“(整数)”
目前我正在使用扩展程序将 Int 转换为 Bool 但我想知道是否没有内置选项来执行此操作。
【问题讨论】:
-
“将 int 转换为 bool”甚至意味着什么并不完全清楚。从历史上看,像 C 这样的语言将非零视为
true,将0视为false,但这只是在内存中编码真与假的实现细节的结果。当您考虑它时,从语义上讲,它实际上没有什么意义。因此,只需明确使用i != 0,以明确您的意思。过度假设它的普遍性并将其命名为boolValue是模棱两可的。一方面,Bash/linux 退出代码是相反的。 0 是好/真,非零是坏/假。