概述 - 為何選擇
通常在程式設計時,有必要區分具有值的變數和不具有值的變數。對於參考型別,例如 C 指標,可以使用特殊值(例如 null
)來指示變數沒有值。對於內部型別,例如整數,則更難。可以使用指定值,例如 -1,但這取決於對值的解釋。它還消除了正常使用時的特殊值。
為了解決這個問題,Swift 允許將任何變數宣告為可選。這表示使用?要麼 ! 在型別之後(參見選項型別 )
例如,
var possiblyInt: Int?
宣告一個可能包含或不包含整數值的變數。
特殊值 nil
表示當前沒有為此變數分配值。
possiblyInt = 5 // PossiblyInt is now 5
possiblyInt = nil // PossiblyInt is now unassigned
nil
還可用於測試指定值:
if possiblyInt != nil {
print("possiblyInt has the value \(possiblyInt!)")
}
請注意在 print 語句中使用 !
來解包可選值。
作為可選項的常見用法的示例,請考慮從包含數字的字串返回整數的函式; 字串可能包含非數字字元,甚至可能為空。
返回簡單 Int
的函式如何表示失敗?它不能通過返回任何特定值來這樣做,因為這會阻止從字串中解析該值。
var someInt
someInt = parseInt("not an integer") // How would this function indicate failure?
但是,在 Swift 中,該函式可以簡單地返回一個可選的 Int。然後失敗由 nil
的返回值表示。
var someInt?
someInt = parseInt("not an integer") // This function returns nil if parsing fails
if someInt == nil {
print("That isn't a valid integer")
}