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

16.5 Swift可选链的赋值操作

发布时间:2020-12-14 06:30:38 所属栏目:百科 来源:网络整理
导读:/** 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 = "zha

/**

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


所以看修改了 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("赋值成功")

}

(编辑:李大同)

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

    推荐文章
      热点阅读