聰明的型別轉換
如果編譯器可以推斷某個物件在某個點上不能為 null,則不必再使用特殊運算子:
var string: String? = "Hello!"
print(string.length) // Compile error
if(string != null) {
// The compiler now knows that string can't be null
print(string.length) // It works now!
}
注意: 編譯器不允許你智慧轉換可能在 null 檢查和預期用途之間修改的可變變數。
如果可以從當前塊的範圍外部訪問變數(例如,因為它們是非本地物件的成員),則需要建立一個新的本地引用,然後你可以智慧地轉換和使用它。