加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

16.6 Swift可选链不会增加可选类型的可选性

发布时间:2020-12-14 06:30:36 所属栏目:百科 来源:网络整理
导读:/** 16.6- 可选链不会增加可选类型的可选性 我们知道我们通过可选链请求的数据最终会被系统封装成一个可选类型的数据, 考虑一个特殊的情况,如果我们通过可选链请求的数据本身就是一个可选值,那么这个时候系统会怎么做呢? 那系统会把我们这个可选值再封装

/**

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))

*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读