On Thu, 25 Nov 2010 19:28:13 +0100 "Simen kjaeraas" <simen.kja...@gmail.com> wrote:
> > You seems to take it for granted that I cannot write: > > auto myExportedSymbol = new T(); > > ... > > myExportedSymbol.i = 1; > > but for me there is no obvious reason why D refuses that, and accepts > > T myExportedSymbol; > > static this () { > > auto myExportedSymbol = new T(); > > ... > > myExportedSymbol.i = 1; > > } > > It's the same thing, from my point of view: when I import the module, I > > get the symbol correctly defined. I don't get why a module needs a > > constructor: why else has it a top-level? > > The reason for this is partly historical (C does it this way), but more > importantly, practical. This way it is obvious what code will be executed > at which time, and code is not as easily 'hidden' between type and > variable declarations. Thank you, Simen, I get it better. I have a solution with static this anyway, even if not completely satisfying. Simply tried to understand better the whys and hows. (And sorry all for the somewhat frustrated tone of a few posts by me.) Denis -- -- -- -- -- -- -- vit esse estrany ☣ spir.wikidot.com