【发布时间】:2016-04-01 04:23:07
【问题描述】:
我正在处理 learn-swift playground 并在学习该语言时将其升级到 Swift 2.0。以下代码(可能适用于早期版本的 Swift)现在生成两个错误:“在所有存储属性初始化之前使用'self'”和“在初始化之前使用常量'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 我看到我可以将let capitalCity: City! 更改为var capitalCity: City! 并且语法错误得到解决。
我意识到在这个人为的例子中,一个国家的首都可以改变,所以这很好,但是如果有一个值真的是一个常数的情况......
有什么方法可以解决语法错误,同时保持 capitalCity 不变?
【问题讨论】:
标签: swift initialization swift2