Swift是一門型別安全語言,型別安全語言需要代碼裡值的類型非常明確。如果你的代碼中有部分值需要String類型,你就不能錯誤地傳遞Int。
鑒於Swift的型別安全,編譯代碼時,Swift會執行類型檢查並將任何類型不符的地方標記為錯誤,使你在開發當中儘可能早的捕獲並修正錯誤。
類型檢查有助於你在操作不同值的類型時避免犯錯。但這並不意味著你必須在聲明每一個常量或變數時去檢查類型,如果你不檢查所需值的類型,Swift會執行類型推斷來計算出相應地類型。
類型推斷讓編譯器在編譯代碼時,根據你提供的值,自動推測出特定運算式的類型。
基於類型推斷,Swift對型別宣告的需要遠比C或Objective-C語言要少得多。常量與變數仍然有明確的類型,但明確指定類型的工作已經由編譯器代你完成。
當你聲明一個常量或變數並賦予一個初始值時,類型判斷尤其有用。通常通過在聲明時賦字面值(literal value,或稱“字面量”literal)實現(類型判斷)。(字面值指直接出現在原始碼中的值,如下例中的 42 與 3.14159)
比如說,你給一個新的常量賦一個字面值42但未指定其類型時,Swift會推斷你想要一個Int型的常量,因為你初始化時提供的數字像一個整數:
1 let meaningOfLife = 422 // meaningOfLife 被推斷為Int型
同樣的,如果不為浮點數字面量指定類型時,Swift會推斷你想要建立一個Double型:
1 let pi = 3.141592 // pi 被推斷為Double型
Swift在推斷浮點數數字時通常會選用Double(而不是Float)。
如果你在運算式中結合了整數和浮點數字面量,Swift會根據上下文中推斷返回Double型:
1 let anotherPi = 3 + 0.141592 // anotherPi 會被推斷為Double型
上例中,字面值3自身不屬於某個類型,也未明確指定類型,根據當前附加部分的浮點數字面量推斷並適當地輸出Double型。
謝謝,Swifter-QQ群:362232993,同好者進~
Fork:https://github.com/Joejo/Swift-lesson-for-chinese