簡體   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