【发布时间】:2018-07-19 18:24:39
【问题描述】:
我了解 Swift 对类型非常严格,不会将一种类型隐式转换为另一种类型。
为什么这不会产生错误并且输出是一个双精度数组?
let myDoubles = [Double.Pi, 42]
但是这样呢?
let fortyTwoInt = 42;
let myDoubles = [Double.Pi, one]
为什么它在第一个示例中隐式地将 42 转换为 42.0?如果它没有投射,还会发生什么?
更简单的例子:
let someFloat = 2.0 + 2
对
let twoInt = 2
let someFloat = 2.0 + twoInt
同样,后一个不起作用。
【问题讨论】:
-
参考手册(Lexical Structure 部分)说:“文字本身没有类型。相反,文字被解析为具有无限精度和 Swift 的类型推断尝试推断文字的类型。”
标签: swift type-inference