如果我打算做這樣的事情:添加Ints和Double總是需要轉換嗎?
var total = 0.05 * 6 + 9
我需要總是這樣做它的工作?
var total = 0.05 * Double(6) + Double(9)
如果我打算做這樣的事情:添加Ints和Double總是需要轉換嗎?
var total = 0.05 * 6 + 9
我需要總是這樣做它的工作?
var total = 0.05 * Double(6) + Double(9)
像6
或9
數字文本沒有一個固定的類型,它們會自動適應。所以在0.05 * 6 + 9
,6
和9
已經是Double
類型。如果你寫
let six = 6
let nine = 9
var total = 0.05 * six + nine
那就沒辦法了,因爲對自己的6
具有類型Int
。
要擴大gnasher729的答案,如果你發現有自己(說)添加Double
和Int
頻繁
例如
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
。
有時「自動適應」給出[意外的結果](http://stackoverflow.com/questions/28813516/strange-swift-numbers-type-casting :) :) –