16.5 Swift可选链的赋值 *** 作

16.5 Swift可选链的赋值 *** 作,第1张

概述        /**          16.5-可选链的赋值 *** 作          */                  class Person  {             var name = ""             func whoami() -> String {                 print("My name is \(name)")            

/**

16.5-可选链的赋值 *** 作

*/

class Person {

var name = ""

func whoami() -> String {

print("My name is \(name)")

return name

}

init(name: String) {

self.name = name

}

}

var p1: Person = Person.init(name: "Tom")

p1.name = "zhangsan"

p1.whoami()

var p0: Person?

p0 = p1

p0?.name = "lisi"

if p0 != nil {

print("p0!.name==\(p0!.name)")

}

print("p1.name==\(p1.name)")

/**

p0!.name==lisi

p1.name==lisi

@H_580_301@

所以看修改了 p0name属性之后,p1name属性也被改变了。因为,

class 类型是引用类型, p0 = p1 是浅拷贝。

但是如果把 Person 改为 struct类型就不会出现这个。

因为struct类型是值类型, p0 = p1 是深拷贝,

*/

/**

判断赋值 *** 作是成功还是失败了,

赋值 *** 作也有返回值,是可选类型

赋值 *** 作返回 () 就是 VoID,另一种可能就是返回 nil

*/

let res = p0?.name = "lisi"

// () 就是 VoID

let res1: VoID? = (p0?.name = "lisi")

print("res==\(res)")

/**

res==Optional(())

也就是说这个可选类型的赋值 *** 作的返回值是一个可选类型。

*/

if (p0?.name = "lisi") != nil {

print("赋值成功")

}

总结

以上是内存溢出为你收集整理的16.5 Swift可选链的赋值 *** 作全部内容,希望文章能够帮你解决16.5 Swift可选链的赋值 *** 作所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1067815.html

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

发表评论

登录后才能评论

评论列表(0条)

保存