繁体   English   中英

具有属性和方法的可选类型行为

[英]Optional type behaviour with properties and methods

不能使用可选链接修改可选元素的属性是否正确?

class Something {
    var mark:Person?

    func changeAge{ 
        mark = Person()
        mark?.age = 40 <--- IT DOESN'T WORK.
        mark?.sayHello() <----- IT WORKS 
    }
}

尝试对age属性进行更改时,出现age错误: Cannot assign to the result of this expression但是我可以调用方法sayHello 由于这两个元素隔间属于Person的实例,因此我无法理解为什么我无法访问其属性,但可以访问方法。

编辑:我知道我可以使用强制展开或可选绑定...我只是在问为什么我不能以这种方式访问​​属性,但可以访问方法。

好吧,如果它为nil, 则无法访问该方法-仅当mark?时才调用该方法mark? 不为零。 如果有mark?则分配给属性毫无意义mark? 为零,如果不是(并且您确定不是),则可以分配给mark! 如果不确定是否为零,请使用:

if let m = mark {
   m.age = 40
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM