1、使用技巧
1.1 if let
如果我们要表达“当optional不等于nil时,则执行某些操作”这样的语义
写法一:
var number:Int? = 1
if number != nil{
print(number!)
}
写法二:
if let number = number {
print(number)
}
1.2 guard let
func test() {
guard let number = number else { //如果为nil直接返回
return
}
print(number)
1.3 ??
如果我们希望在optional的值为nil时设定一个默认值
var name:String? = nil
let result = name ?? "未填写姓名"
1.4 force unwrapping
对于一个optional变量来说,可以用!来强行读取optional包含的值,Swift管它叫作`force unwrapping。然而,这种操作并不安全,强制读取值为nil的optional会引发运行时错误。
2、Optioanl-实现探究
Optional其实是标准库里面的一个enum类型
public enmum Optional<Wrapped> : ExpressibleByNilLiteral {
case none
case some(Wrapped)
public init(_ some:Wrapped)
....
}
Optional.none就是nil
Optioanl.some则包装了实际的值。
var str:Optional<String> = "abc"
if let actualStr = str {
let count = actualStr.count
print(count)
}