/**
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@
所以看修改了 p0的name属性之后,p1的name属性也被改变了。因为,
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可选链的赋值 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)