www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - pass variable names

reply "Saaa" <empty needmail.com> writes:
Is it possible to get the passed variable name à la:
--
void functio(A...)(ref A a)
{
    writefln(typeof(a[0]));
}
int i;
functio(i); // prints "i"
--
Also how do I fix this:
--
functio(`i`); // Error: "i" is not an lvalue
-- 
Jul 09 2009
parent reply Daniel Keep <daniel.keep.lists gmail.com> writes:
Saaa wrote:
 Is it possible to get the passed variable name � la:
 --
 void functio(A...)(ref A a)
 {
     writefln(typeof(a[0]));
 }
 int i;
 functio(i); // prints "i"

No. You should be able to get the name using an alias: void func(alias var)() { writefln(var.stringof); } But you can't do it at runtime.
 Also how do I fix this:
 --
 functio(`i`); // Error: "i" is not an lvalue

You have to store the literal in a variable.
Jul 09 2009
parent reply "Saaa" <empty needmail.com> writes:
 No.

 You should be able to get the name using an alias:

 void func(alias var)()
 {
    writefln(var.stringof);
 }

 But you can't do it at runtime.

 Also how do I fix this:
 --
 functio(`i`); // Error: "i" is not an lvalue

You have to store the literal in a variable.

func( `name_i`, i, `name_ar`, ar, `name_b`, b ..etc..) only the variables need to be ref.
Jul 09 2009
parent BCS <none anon.com> writes:
Hello Saaa,

 No.
 
 You should be able to get the name using an alias:
 
 void func(alias var)()
 {
 writefln(var.stringof);
 }


I'll seconds this, there doesn't seem to be any way to generate tuples of aliases and this is another cases where it would be handy.
Jul 09 2009