Swift代码中info属性类型解析及无get块计算属性疑问
解析代码中
info属性的类型 先看这段代码里的info属性:
var info: () -> String { { return "\(self.name) is \(self.colour) in colour" } }
它的类型是() -> String,也就是无参数、返回值为String类型的闭包。这个属性属于计算属性,每次访问info时,会返回一个闭包;调用fruit.info()则是执行这个闭包,最终得到拼接了水果名称和颜色的字符串。
Swift计算属性能否不编写get块?
完全可以。在Swift中,只读计算属性默认不需要显式写出get关键字,直接把计算逻辑写在大括号里即可。上面的info就是省略get的写法,等价于以下带get的完整实现:
var info: () -> String { get { { return "\(self.name) is \(self.colour) in colour" } } }
只有当计算属性需要同时实现可读可写(即包含get和set逻辑)时,才必须显式标注get和set关键字。
内容的提问来源于stack exchange,提问作者Akhil K Markose
相关产品推荐
相关产品推荐

