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);
 }
Can this be combined with the tuple parameter?
 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.
I needed it to get my function to accept 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);
 }
Can this be combined with the tuple parameter?
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