扩展" the Swift Programming Language " (Swift 5.5) " Integer and float - point Conversion "中的例子:
3 + 0.14 // allowed
let three = 3
let rest = 0.14
3 + rest // allowed
0.14 + three // compile error
three + 0.14 // compile error
我不明白为什么最后两行被视为编译错误。有人能帮我解释一下吗?谢谢。
有两个基本规则:
- 如果可能的话,可以隐式地转换没有类型注释的数字文字。
- 常量或变量初始化为固定类型,该类型不能更改。浮点字面值变为
Double
,整数字面值变为Int
。
所以three
是Int
,0.14
是Double
。
3 + rest
可以工作,因为3
可以被推断为Double。
但是0.14
不能被推断为Int
,所以最后两行编译失败。