[英]Need help on type inference in swift
當我讀到swift的類型推斷時,我知道swift足夠聰明,可以了解數據類型
就像我寫這個程序的時候
var v3 = 2+2.5
print("the result is \(v3)")
然后我看到輸出
the result is 4.5
但是當我寫這個程序
var v1 = 2.5
var v2 = 2
var v3:Double = v1 + v2
print("the result is \(v3)")
然后給我這個錯誤
ERROR at line 7, col 20: binary operator '+' cannot be applied to operands of type 'Double' and 'Int'
var v3:Double = v1 + v2
~~ ^ ~~
NOTE at line 7, col 20: expected an argument list of type '(Double, Double)'
var v3:Double = v1 + v2
任何人都可以向我解釋一下這里發生了什么
我已經在IBM沙箱上完成了該程序
當您編寫var v3 = 2+2.5
Swift必須推斷2
的類型,這是一個與Int
和Double
都兼容的數字文字。 編譯器能夠執行此操作,因為同一表達式中有2.5
,即Double
。 因此,編譯器得出結論, 2
也必須是Double
。 編譯器計算總和,並將v3
設置為4.5
。 在運行時不執行任何添加。
當您編寫var v2 = 2
,編譯器會將2
視為Int
,同時也使v1
和Int
相同。 現在,在var v3:Double = v1 + v2
上添加了一個附加項,該附加項失敗,因為v1
和v2
具有不匹配的類型。
如果改為聲明var v2:Double = 2
,則此問題將得到解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.