小编典典

属性初始化程序在“自我”可用之前运行

swift

好像我遇到了本不应该出现的问题……但我想寻求帮助。

这里有一些我没有得到的解释。

具有两个简单的类,其中一个引用另一个,如下所示;

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
}

我收到注释的编译错误。有人可以告诉我该怎么办吗?

非常感谢任何好人的帮助!


阅读 261

收藏
2020-07-07

共1个答案

小编典典

正如 vadian 正确指出的 那样, 您应该init在以下情况下创建一个:

class MyOwn {
    let myUser: User
    var life: Int

    init() {
        self.myUser = User(name: "John", age: 100)
        self.life = myUser.age 
    }
}

您不能为 依赖 于另一个实例属性的存储属性提供默认值。

2020-07-07