Swift類型安全和類型推斷
類型安全和類型推斷
Swift 是一個*類型安全(type safe)*的語言。類型安全的語言可以讓你清楚地知道代碼要處理的值的類型。如果你的代碼需要一個String
,你絕對不可能不小心傳進去一個Int
。
由於 Swift 是類型安全的,所以它會在編譯你的代碼時進行*類型檢查(type checks)*,並把不匹配的類型標記爲錯誤。這可以讓你在開發的時候儘早發現並修復錯誤。
當你要處理不同類型的值時,類型檢查可以幫你避免錯誤。然而,這並不是說你每次聲明常量和變量的時候都需要顯式指定類型。如果你沒有顯式指定類型,Swift 會使用*類型推斷(type inference)*來選擇合適的類型。有了類型推斷,編譯器可以在編譯代碼的時候自動推斷出表達式的類型。原理很簡單,只要檢查你賦的值即可。
因爲有類型推斷,和 C 或者 Objective-C 比起來 Swift 很少需要聲明類型。常量和變量雖然需要明確類型,但是大部分工作並不需要你自己來完成。
當你聲明常量或者變量並賦初值的時候類型推斷非常有用。當你在聲明常量或者變量的時候賦給它們一個*字面量(literal value 或 literal)*即可觸發類型推斷。(字面量就是會直接出現在你代碼中的值,比如42
和3.14159
。)
例如,如果你給一個新常量賦值42
並且沒有標明類型,Swift 可以推斷出常量類型是Int
,因爲你給它賦的初始值看起來像一個整數:
let meaningOfLife = 42
// meaningOfLife 會被推測爲 Int 類型
同理,如果你沒有給浮點字面量標明類型,Swift 會推斷你想要的是Double
:
let pi = 3.14159
// pi 會被推測爲 Double 類型
當推斷浮點數的類型時,Swift 總是會選擇Double
而不是Float
。
如果表達式中同時出現了整數和浮點數,會被推斷爲Double
類型:
let anotherPi = 3 + 0.14159
// anotherPi 會被推測爲 Double 類型
原始值3
沒有顯式聲明類型,而表達式中出現了一個浮點字面量,所以表達式會被推斷爲Double
類型。