我缺少的東西或強制類型轉換是必須的,同時具有不同類型的加號:類型轉換的義務是蘋果斯威夫特
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: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
這真的很討厭和錯誤。我已經提出了一個與蘋果公司的錯誤,但他們還沒有做過任何事情。
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
您將需要提供大量的覆蓋,以涵蓋所有的基礎。就像我說的,我不推薦它。
注意'1 + 7.0'無論如何都可以工作。 「數字常量和變量的組合規則不同於數字文字的規則,文字值3可以直接添加到文字值0.14159,因爲數字文字本身沒有明確的類型,它們的類型是推斷的只有在它們被編譯器評估的時候。「 – 2014-10-09 15:59:18
@MikePollard好點。我已經更新了我的答案。 – 2014-10-09 16:03:16
我知道這是不安全的,但對於一些大的數學程序,它的確定,使用@Mike波拉德方法覆蓋默認+ & - 運營商:
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) }
正如書中說:「整型和浮點型之間的轉換類型必須明確:「 – 2014-10-09 15:44:49
但它使我的代碼如此混亂!任何技巧或逃生路線? – AVEbrahimi 2014-10-09 15:45:42
它使您的代碼「如此可預測」。 – Ideasthete 2014-10-09 15:48:58