[swift-users] lazy initialisation
J.E. Schotsman
jeschot at xs4all.nl
Mon Jul 4 14:04:12 CDT 2016
> On 04 Jul 2016, at 19:21, Zhao Xin <owenzx at gmail.com> wrote:
>
> You'd better sharing some of you code here first.
For example, consider this:
class TestStruct1
{
let a = 10
let b = 20
let c:Int = {return self.a*self.b}()
}
Of course this is a trivial example. In reality the calculation of c from a and b might take longer.
Since this is not allowed I try
struct TestStruct2
{
let a = 10
let b = 20
lazy var c:Int = {return a*b}()
}
Not allowed either even though neither a nor b is lazy.
I have to do
struct TestStruct3
{
let a = 10
let b = 20
private var cInitialized = false
private var _c = 0
var c:Int
{
mutating get {
if !cInitialized
{
_c = a*b
cInitialized = true
}
return _c }
}
}
BTW I pasted Mark’s code in a playground and it compiles indeed.
What’s the difference?
Jan E.
More information about the swift-users
mailing list