Find variable at run time

Josh moonburntm at gmail.com
Fri May 17 19:09:46 PDT 2013


On Friday, 17 May 2013 at 22:15:09 UTC, bearophile wrote:
> Josh:
>
>> Is something like this possible in D?
>>
>> void main()
>> {
>>    int x, y, z;
>>    write("Increment which variable: ");
>>    string input = readln()[0..$ - 1];
>>    findVar(input)++;
>>    writeln(x, y, z);
>> }
>
> The Go language and its standard library make the usage of such 
> runtime reflection much simpler than in D. So I think D has to 
> improve on such things.
>
> A starting point:
>
>
>
> import std.stdio, std.string;
>
> void main() {
>     int x, y, z;
>     auto findVar = ["x": &x, "y": &y, "z": &z];
>     "Increment which variable: ".write;
>     const input = readln.chomp;
>     (*findVar[input])++;
>     writeln(x, y, z);
> }
>
>
>
> With __FUNCTION__ you can tell the name of the current 
> function, but how do you find the caller function? And how do 
> you find the names of the local variables in the caller 
> function?
>
> D is a statically compiled language, and its templates allow to 
> do lot of stuff at compile-time. But some run-time reflection 
> is handy in many cases.
>
> Bye,
> bearophile

Bearophile, is your findVar an AA? It looks like it is, I just 
didn't think you could put refs in an AA.

Thanks

Josh


More information about the Digitalmars-d-learn mailing list