【发布时间】:2017-09-18 22:25:54
【问题描述】:
似乎我遇到了一些不应该出现的问题......但我想寻求帮助。
这里有一些关于堆栈的解释我不明白。
有两个简单的类,其中一个引用另一个,如下所示:
class User {
lazy var name: String = ""
lazy var age: Int = 0
init (name: String, age: Int) {
self.name = name
self.age = age
}
}
class MyOwn {
let myUser: User = User(name: "John", age: 100)
var life = myUser.age
//Cannot use instance member 'myUser' within property initializer
//property initializers run before 'self' is available
}
我收到注释编译错误。有人可以告诉我应该怎么做才能解决这个问题吗?
【问题讨论】:
-
将代码放入方法中。您不能在类的顶层初始化相互依赖的属性。或者使用计算属性。顺便说一句:
User类中的lazy属性是无用的。 -
@vadian,感谢您的帮助。
-
这是
swift中令人惊讶的限制:有什么想法为什么会这样?
标签: swift class properties init lazy-initialization