Hello, i'am experiencing some non consistent behavior with static constructors. I wonder if this is some bug or i just don't know enough of D (most probably!).. Code example bellow:

//------------------------------------------
module main;

import std.stdio;

class B
{
        static this()
        {
                A a = new A;
                int val = a.getValue("A");
        }
}

class A {
        private static int[string] aa;
        
        static this()
        {
                aa = ["A":1, "B":2];
                writeln("@ A static ctor!");
        }

        int getValue(string str)
        {       
                return aa[str]; 
        }
}



void main(string[] args)
{
        B B = new B;
}
//------------------------------------------

The text "@ A static ctor!" never gets printed. The inconsistency (IMHO) is that if i do any of this:
- Declare class A before B;
- Change the var declared in A from an AA to some other p.e int;
- Comment the line "int val = a.getValue("A")";

Maybe there are some other points, but at this point i got confused and decided trying to understand it. Anyway with any of those changes the text gets printed.

Anyone able to shed some light into this?

Cheers,

Reply via email to