general questions about static this() at module level
WhatMeWorry via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Oct 31 17:01:28 PDT 2016
On Monday, 31 October 2016 at 18:46:31 UTC, Jonathan M Davis
wrote:
> though there's no reason to ever use a static constructor
> (shared or otherwise) when you can directly initialize the
> variable. It's really meant for more complicated initialization
> that can't be done directly.
>
> Also, I would point out that in general, you'll be better off
> if you avoid static constructors and destructors. They can be
> extremely useful, but if multiple modules use them, and one
> imports the other (even indirectly), and the runtime thinks
> that that dependency is circular, then it'll throw an Error
> when you start your program (this comes from the fact that the
> runtime has to determine the order to run the static
> constructors so that everything is initialized before it's
> used, but it's not very smart about it, since it bases what it
> does solely on the presense of static constructors in a module
> and not what they actually do).
Thanks! This is probably why I was not able to find a good code
example in github. Not that I tried very hard when search
returned over 10K occurrences of "static this". Seems this kind
of higher level reasoning is missing from the books and
documentation that I've read. Hope this kind of knowledge gets
recorded somewhere.
More information about the Digitalmars-d-learn
mailing list