Alex wrote:
Sorry, I guess I wasn't clear. What I want is to be able to do something like
the following:
void foo(...) {
variadic [char[]] args = get_named_args(_arguments);
foreach (k,v; args) {
writefln("%s : %s", k, v);
}
}
foo( name("john"), age(30), dob("6/24/1980") );
and have it print
name : john
age : 30
dob: 6/24/1980
Could opDispatch be useful in some way?
The following is nowhere clean. Additionally, VarArg.value must be some
sort of 'any type' instead of 'string value' for int arguments like 30
to work. Still... :)
// Worked with dmd 2.039
import std.stdio;
struct VarArg
{
string key;
string value;
}
struct VarArgGenerator
{
VarArg opDispatch(string key, T)(T value)
{
return VarArg(key, value);
}
}
VarArgGenerator arg;
void foo(VarArg[] args...)
{
foreach (arg; args) {
writefln("%s : %s", arg.key, arg.value);
}
}
void main()
{
foo(arg.name("john"),
arg.age("30"),
arg.dob("6/24/1980"));
}
Ali