如果我要做这样的事情:
var total = 0.05 * 6 + 9
我是否需要始终为此工作?
var total = 0.05 * Double(6) + Double(9)
答案 0 :(得分:3)
6
或9
这样的数字文字没有固定类型,它们会自动适应。因此,在0.05 * 6 + 9
中,6
和9
已经是Double
类型。如果你写了
let six = 6
let nine = 9
var total = 0.05 * six + nine
这不起作用,因为6
本身的类型为Int
。
答案 1 :(得分:1)
要扩展gnasher729的答案,如果您发现自己必须(比方说)经常添加Double
和Int
e.g。
let six: Int = 6
let nine: Double = 9
var totalError = six + nine // Error!
您可以添加一个功能来保存输入
func +(lhs: Int, rhs: Double) -> Double
{
return Double(lhs) + rhs
}
var total = six + nine // OK!
我认为我不建议在一般情况下这样做,因为原始限制的重点是让你把转换视为潜在错误的来源。我认为完全合法的一个案例是移位运营商
var foo: Int = 5
var bar: UInt64 = 20
var baz = bar << foo // Error!
在上面的例子中,foo需要被强制转换为UInt64
IMO,两个移位运算符的右侧应始终为Int
。