Seems like I'm having a problem with something that shouldn't be the case... But I would like to ask for some help.
There are some explanations here on the Stack I don't get.
Having two simple classes where one refers to another, as per below;
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
}
I get the commented compile error. May someone please tell me what should I do to solve the case?
Many thanks to any good man for help!
As correctly pointed by vadian you should create an
init
in such scenarios:You can't provide a default value for a stored property that depend on another instance property.
You should declare life like this:
Because you are trying to initialise one property(variable) with another during initialisation process. At this time variables are not available yet.