Swift 笔记:可选类型与 nil


可选类型

使用可选类型(Optionals)来处理值可能缺失的情况。可选类型表示:

  • 有值,等于 x

或者

  • 没有值
let pNum = "123"
let cNum = Int(pNum)
// cNum 被推测类型为 "Int?",或类型 "Optional Int"

问号暗示包含的值是可选类型,也就是说可能包含 Int 值也可能不包含值

nil

可选变量赋值为 nil 来表示它没有值。
nil 不能用于非可选有常量和变量。
如果在声明一个可选常量或变量时没有赋值,它们会自动被设置为 nil

if 语句以及强制解析

使用 if 语句和 nil 来比较判断一个可选值是否包含值,使用“相等”(==)或“不等”(!=)来执行比较。

当确定可选类型确实包含值时,可以在可选值的名字后面加一个感叹号(!)来获取值。这被称为可选值的**强制解析(Forced Unwrapping):

let possibleNum = "123"
let convertedNum = Int(possibleNum)

if convertedNum != nil {
    print("convertedNum has an integer value of \(convertedNum!).")
}

可选绑定

使用可选绑定(Optional Binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时变量或者变量:

if let constantName = someOptional {
    statements
}

隐式解析可选类型

可选类型第一次被赋值后,可以确定总会有值,这种类型的可选状态被定义为隐式解析可选类型(Implicitly Unwrapped Optionals)。把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选类型。