简体   繁体   中英

Stored properties in Swift can't refer to each other?

What is the reason I can't give a value to a stored property that depends on the value of another one in Swift 2.0?

The code below gives an error saying:

Something.Type does not have a member named 'foo'

class Something {
    let foo = "bar"
    let baz = "\(foo) baz"
}

This is odd, as Something.Type certainly does have a member called foo.

Is there a way around this?

Looks like you're trying to initialise the variable baz , before swift has had a chance to know that foo is a property of Something . Place your initialisation inside the init constructor.

class Something {
    let foo: String
    let baz: String

    init () {
        foo = "bar"
        baz = "\(foo) baz"
    }
}

You can also use lazy initialization but now you have to make it a variable:

class Something {
    let foo = "bar"
    lazy var baz = { "\(self.foo) baz" }()
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM