簡體   English   中英

需要幫助快速進行類型推斷

[英]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的類型,這是一個與IntDouble都兼容的數字文字。 編譯器能夠執行此操作,因為同一表達式中有2.5 ,即Double 因此,編譯器得出結論, 2也必須是Double 編譯器計算總和,並將v3設置為4.5 在運行時不執行任何添加。

當您編寫var v2 = 2 ,編譯器會將2視為Int ,同時也使v1Int相同。 現在,在var v3:Double = v1 + v2上添加了一個附加項,該附加項失敗,因為v1v2具有不匹配的類型。

如果改為聲明var v2:Double = 2 ,則此問題將得到解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM