[英]Typecast Obligation is Apple Swift
在添加具有不同类型的数字时,我是否缺少某些内容或必须进行类型转换?
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
在添加具有不同类型的数字时,我是否缺少某些内容或必须进行类型转换?
不,您不缺少任何东西,必须进行类型转换。
我认为算术运算很好,因为它使您考虑类型转换,但是,相同的规则也适用于移位。 即
var i: UInt64 = 6
var j: Int = 3
var k = i << j // error
这真是令人讨厌和错误。 我向Apple提出了一个错误,但他们尚未对此做任何事情。
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
您将需要提供很多替代来覆盖所有基础。 就像我说的,我不建议这样做。
我知道这是不安全的,但是对于某些大型数学例程,可以使用@Mike Pollard方法覆盖默认的+&-运算符:
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) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.