我正在通过一个
learn-swift playground,并升级到Swift 2.0,当我学习语言.以下代码(可能与以前版本的Swift一起使用)现在会生成两个错误:“在所有存储的属性被初始化之前使用”“self”,在初始化之前使用“Constant”self.capitalCity“
class Country { let name: String let capitalCity: City! init(name: String,capitalName: String) { self.name = name self.capitalCity = City(name: capitalName,country: self) } } class City { let name: String unowned let country: Country init(name: String,country: Country) { self.name = name self.country = country } }
看到一个answer to a similar question我看到我可以改变让都市:城市!到大都会城市:城市!并解决语法错误.
我意识到,在这个例子中,一个国家的首都可以改变,所以这样会很好,但如果有一个价值真的是一个常数的情况怎么办?
有没有办法解决语法错误,同时保持capitalCity是一个常数?
在这种情况下,我建议您使该属性变为变量,但通过计算属性隐藏它(使其看起来像一个常量):
class Country { let name: String private var _capitalCity: City! var capitalCity: City { return _capitalCity } init(name: String,capitalName: String) { self.name = name self._capitalCity = City(name: capitalName,country: self) } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。