Swift Optional学习笔记
程序员文章站
2022-06-08 09:23:04
...
Optional(可选项)
声明方式:在变量类型后加 ?
两重含义:
- 这里有一个值,它等于x;
- 这里根本没有值
通过给可选变量赋值为nil
,表示没有值。
Swift中,nil
不是指针,它只是值缺失的一种特殊类型,任何类型的可选项都可以设置为nil
,而不仅仅时对象类型。且只有可选项可以赋值为nil
。
可选项是没法直接使用的,需要用 !
展开之后才能使用(意思是我知道这个可选项有值)
let str: String? = "abc"
let count = str.count // error: 必须先展开才能访问其属性
if str != nil { // 判断不为nil再做展开
let count = str!.count // 可选项展开
print(count)
}
强制展开,不推荐,如果可选项为nil
,出错:
let str: String? = nil
let count = str!.count // error : EXC_BAD_INSTRUCTION
可以使用可选项绑定来判断可选项是否包含值
if let actualStr = str { // 首先判断str是否为nil,如果不是nil,会赋值给常量actualStr
let count = actualStr.count
print(count)
}
声明时使用!
而非?
(有什么用,还没学到)
let str: String! = "abc"
let count = str.count
对可选项访问时在后面加 ?
如果可选项不为nil
,返回也是一个可选项结果,否则返回nil
let str: String? = "abc"
let count = str?.count // 此时count依然为一个可选项
//let lastIndex = count - 1 // error: 必须先展开才能访问其属性
if count != nil {
let lastIndex = count! - 1
print(lastIndex)
}