聰明的型別轉換

如果編譯器可以推斷某個物件在某個點上不能為 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 檢查和預期用途之間修改的可變變數。

如果可以從當前塊的範圍外部訪問變數(例如,因為它們是非本地物件的成員),則需要建立一個新的本地引用,然後你可以智慧地轉換和使用它。