2015-05-06 31 views

回答

3

69數字文本沒有一個固定的類型,它們會自動適應。所以在0.05 * 6 + 9,69已經是Double類型。如果你寫

let six = 6 
let nine = 9 
var total = 0.05 * six + nine 

那就沒辦法了,因爲對自己的6具有類型Int

+2

有時「自動適應」給出[意外的結果](http://stackoverflow.com/questions/28813516/strange-swift-numbers-type-casting :) :) –

1

要擴大gnasher729的答案,如果你發現有自己(說)添加DoubleInt頻繁

例如

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

相關問題