//: Playground - noun: a place where people can play
import UIKit
/*
* 本节内容:
* 1.可选型的nil聚合(Nil-Coalescing)解包
* 2.可选型的链式(Optional Chaining)解包
* 3.可选型和元组的结合
*/
var errorMessage: String?
// 需求: 如果可选型有值, 获取非nil的值; 如果为nil, 给定默认的值
// 使用三目运算符实现需求, 结果:errorMsg是String?
let errorMsg = errorMessage == nil ? "No Error" : errorMessage
print(errorMsg)
// nil聚合解包: 实现需求, 又包含解包的过程
let errorMsgNew = errorMessage ?? "No Error"
// 需求:对象的属性是可选型(对象), 调用可选型对象的方法(前提这个可选型不能为nil)
// 可选型的链式表达: 不需要判断该可选型是否为nil
errorMessage?.uppercased()
// 可选型和元组结合
var tupleOne: (errorCode: Int, errorMessage: String?) = (404, "Not Found")
// tupleOne不是可选型, 不能赋值nil
// tupleOne = nil
tupleOne.errorMessage = nil
var tupleTwo: (errorCode: Int, errorMessage: String)? = (404, "Not Found")
tupleTwo = nil
// tupleTwo?.errorMessage = nil
var tupleThree: (errorCode: Int, errorMessage: String?)? = (404, "Not Found")
tupleThree = nil
tupleThree?.errorMessage = nil
var newMessage: String?
newMessage = "hello" // 初始化/赋值