/**
16.6-可选链不会增加可选类型的可选性
我们知道我们通过可选链请求的数据最终会被系统封装成一个可选类型的数据,
考虑一个特殊的情况,如果我们通过可选链请求的数据本身就是一个可选值,那么这个时候系统会怎么做呢?
那系统会把我们这个可选值再封装一层成为可选值的可选值吗?
那到底系统是怎么做的呢?
*/
var x: Int? = 10
var y: Int?? = x
print("x==\(x)")
print("y==\(y)")
/**
x==Optional(10)
y==Optional(Optional(10))
所以说存在 可选值 的可选值
*/
/**
当通过可选链请求的数据为可选类型时可选链的返回值情况。
*/
class CreditCard {
var number: Int
init(number: Int) {
self.number = number
}
}
class Person {
var card: CreditCard?
init(card: CreditCard) {
self.card = card
}
}
var card: CreditCard? = CreditCard.init(number: 233)
var ccard: CreditCard?? = card
print("card==\(card)")
print("ccard==\(ccard)")
/**
card==Optional(swiftLearn15.TestVC5.(viewDidLoad () -> ()).(CreditCard #1))
ccard==Optional(Optional(swiftLearn15.TestVC5.(viewDidLoad () -> ()).(CreditCard #1)))
*/
var p0: Person? = Person.init(card: CreditCard.init(number: 99877))
// 可选链 请求可选类型的数据 ,返回的仍然是一个可选值。不会增加它的可选性,成为可选值的可选值。
print("p0?.card==\(p0?.card)")
/**
p0?.card==Optional(swiftLearn15.TestVC5.(viewDidLoad () -> ()).(CreditCard #1))
*/
原文链接:/swift/322341.html