reference to 'self' inside a function

Rob T rob at ucora.com
Sun Sep 23 01:58:09 PDT 2012


> string scopeName()
> {
>     return q{__traits(identifier, __traits(parent, {}))};
> }
>
> void main()
> {
>     writeln(mixin(scopeName()));
> }
>
> That should be quite usable, except if the user forgets the 
> mixin() part - unfortunately that potential bug seems to be 
> statically undetectable.


Thanks, for comming up with this clever solution, it's the best 
one so far, and I will likely be using it.

The real problem of course is that there is no simple or obvious 
solution to what is a very basic requirment - to inspect 
information about a calling function, and/or execute it 
recursively without having to re-specify the function explicitly. 
Don't get me wrong, I am very much impressed with D, but the 
reflection component in D should be made a real part of the 
language, and really ought to be made more generalized (elegant).

It is interesting that both classes and structs are able to refer 
to themselves through "this", so that's a hint that there may be 
some more use to the idea of self-referencing elsewhere. For 
example, the ctors and dtors refer back to "this", hinting that 
functions should be able to do the same thing for recursive calls.

--rt



More information about the Digitalmars-d mailing list