/**
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))
*/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。