In a following class
class Foo {
let _defaultValue = "N/A"
let value: String
init (dict: NSDictionary) {
self.value = dict["bar"] as? String! ?? _defaultValue
}
}
compiler fails with the message
constant 'self.value' captured by a closure before being initialized
As far as I can see, no operators read `self.value. The message seems somewhat confusing.
I accidentally came up with a workaround. I should say it confuses me even more:
class Foo {
let value: String
init (dict: NSDictionary) {
let _defaultValue = "N/A"
self.value = dict["bar"] as? String! ?? _defaultValue
}
}
Declaring _defaultValue
and initializing it within the constructor makes the code compile.
It'd be an immense help if someone could explain why an error occurs in the first case and what is the compiler happier in the second case?