在添加具有不同类型的数字时,我是否遗漏了某些内容或强制转换是必须的:
var i:Int=5
var d:Double=6.0
var q:Double= i + d // this is error?!
var w:Double= Double(i) + d // this is ok
答案 0 :(得分:1)
在添加具有不同类型的数字时,我是否遗漏了某些内容或强制转换是必须的:
不,你不会错过任何东西,强制转换是强制性的。
我认为它对算术运算很好,因为它会让你考虑你的类型转换,但同样的规则适用于位移。即。
var i: UInt64 = 6
var j: Int = 3
var k = i << j // error
这真令人烦恼和错误。我已经向Apple提出了一个错误,但他们还没有做任何事情。
答案 1 :(得分:1)
Swift不提供数字类型之间的自动转换。
通常,您只需按照问题中的方式执行转换。
我不推荐它,但你可以这样做:
func +(i:Int, d:Double) -> Double {
return Double(i) + d
}
let i: Int = 1
let d: Double = 7.0
i + d
// result: 8.0
您需要提供大量覆盖以涵盖所有基础。就像我说的,我不推荐它。
答案 2 :(得分:-1)
我知道它不安全但是对于一些大的数学例程它没问题,使用@Mike Pollard方法覆盖默认值+&amp; - 运营商:
func + (left: Int, right: Double) -> Double { return Double(left) + right }
func + (left: Double, right: Int) -> Double { return left + Double(right) }
func - (left: Int, right: Double) -> Double { return Double(left) - right }
func - (left: Double, right: Int) -> Double { return left - Double(right) }