On 01/27/2018 10:25 PM, Shachar Shemesh wrote:
What will the following code print? Do not use the compiler:

import std.stdio;

struct A {
     int a = 1;

     void initialize() {
         a = a.init;
     }
}

void main() {
     A a;
     a.initialize();

     writeln(a.a);
}

I find this behavior unexpected.

I used the compiler to check my guess and I was wrong. The following makes the difference:

        a = A.init.a;

So we currently have:

    a.init          (type's init value)
    A.init.a        (members' init value)

If it were designed as you want, we would have the following:

    typeof(a).init  (type's init value)
    a.init          (members init value)

Well, too late I guess. :)

Ali

Reply via email to