Getting the current module as a symbol
Mithun Hunsur via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Apr 13 22:32:43 PDT 2016
On Wednesday, 13 April 2016 at 16:58:34 UTC, Vladimir Panteleev
wrote:
> On Wednesday, 13 April 2016 at 11:36:07 UTC, Mithun Hunsur
> wrote:
>> Yeah, that also works; you have to define a symbol (if you
>> don't have one you can already use) in order to get to it, so
>> it's a little wasteful. Still useful to know, though!
>
> No, it's not necessary. You should be able to walk the chain of
> __traits(parent) by starting with a local symbol, e.g. a lambda
> predicate.
>
> Have a look at std.traits.moduleName which does most of the
> work.
Aha! That is a _very_ clever trick. :) For everyone else:
__traits(parent, {});
The {} is a lambda predicate instantiated in the current scope
(i.e. module scope); getting the parent of that gets you the
module. If you wanted to generalise that, you could walk up the
parent chain like Vladimir says - but this is perfect for my
uses. Thanks again!
More information about the Digitalmars-d-learn
mailing list