1.Optional基本使用:
当我们声明一个Optional对象时,无论该对象是在文件作用域还是在函数体内作为局部对象声明,如果不对它初始化,那么它的值默认为空(nil)。
// 声明a为Int类型的option类型对象 var a: Int? = 100
// 类型为Int?,初始化为nil
var b: Int? = nil
2.Optional链:
3.Optional的强制拆解:
4.Optional绑定:
5.空结合操作符:
var a = Int?(0) let b = 0 // 这里的a ?? b表达式 var c = a ?? b // 相当于 c = a != nil ? a! : b
6.隐式拆解的Optional类型:
// 这里声明了一个隐式拆解的Optional变量a var a: Int! = 10 // 这里b的类型为Int? let b = a // 这里输出:b = Optional(10) print("b = (String(describing: b))") // 当隐式拆解的Optional对象作为复合赋值操作符的左值时, // 仍然需要使用 ! 或 ? optional-chaining操作符 a! += 20 a? += 5 // 这里声明了一个隐式拆解的Optional数组变量arr var arr: [Int]! = [1, 2, 3] // 这里对arr使用 ! 操作符, // 使得 arr! 表达式作为 += 的左操作数 // 这里的 ! 不能缺省 arr! += [4, 5, 6]
使用场景:
“将某个图像视图控件作为某个视图控制器类的实例属性。
但是在声明它的时候由于不知道当前视图控制器的实际尺寸,也不知道所用的图像,
因此无法对它进行初始化,而只有等到调用 viewDidLoad方法之后才能对它初始化。
那么这个时候,该图像视图对象就可以声明为隐式拆解的Optional类型,后续对它成员的访问就不需要显式样使用optional-chaining操作符了,代码也能更简洁一些。” 摘录来自: “大话Swift 4.0”。 iBooks.