私はそうではない何かに問題があるようです...しかし、私はいくつかの助けを求めたいです。
ここに、私が得られないスタックについての説明があります。
以下のように、一方が他方を参照する2つの単純なクラスがある。
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
}
コメント付きのコンパイルエラーが表示されます。誰かが私にケースを解決するために何をすべきか教えてもらえますか?
助けてくれた善良な人に感謝します!
vadianで正しく示されているように、このようなシナリオではinit
を作成する必要があります。
class MyOwn {
let myUser: User
var life: Int
init() {
self.myUser = User(name: "John", age: 100)
self.life = myUser.age
}
}
別のインスタンスプロパティに依存するdependストアドプロパティのデフォルト値を提供することはできません。
次のように人生を宣言する必要があります。
lazy var life:Int = {
return self.myUser.age
}()
初期化プロセス中に1つのプロパティ(変数)を別のプロパティ(変数)で初期化しようとしているためです。現時点では、変数はまだ使用できません。