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

16.6 Swift可选链不会增加可选类型的可选性,第1张

概述        /**          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))

*/

总结

以上是内存溢出为你收集整理的16.6 Swift可选链不会增加可选类型的可选性全部内容,希望文章能够帮你解决16.6 Swift可选链不会增加可选类型的可选性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1067814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存