繁体   English   中英

Typecast义务是Apple Swift

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM