this is almost a workaround for the lack of named parameters

Dmitry Olshansky dmitry.olsh at gmail.com
Fri Mar 22 13:02:00 PDT 2013


22-Mar-2013 23:03, deadalnix пишет:
> On Friday, 22 March 2013 at 18:48:56 UTC, timotheecour wrote:
>> so i hacked up a working solution yesterday.
>> advantages over
>> https://github.com/jacob-carlborg/mambo/blob/master/mambo/util/Reflection.d#L135:
>>
>> no need to no arguments at CT (just names); allows optional and non
>> optional ones; allows return value; also, mambo depends on tango and
>> is hard to revive.
>>
>> More later.
>>
>>
>> see:
>> https://github.com/timotheecour/dtools/blob/master/dtools/util/functional.d
>>
>>
>> nothing to install, just call:
>> rdmd --main -unittest dtools/util/functional.d
>>
>>
>> auto s=callNamed!(fun,`x,y`)(10,20);
>> given a function:
>> auto fun(int x,int y=2,double z=z_val, string z2="asdf");
>>
>> Compile time errors will occur on duplicate param names, or ones that
>> don't exist, or ones that are not optional and not provided (eg x, above)
>>
>> Feel free to contribute / comment
>
> Don't have time to look at the code now, but it seems awesome ! Great
> leverage of language capabilities. Slightly different from my proposal,
> but I'm really not sure which interface fit best. I'm starting to think
> this should be :
>
> callNamed!(fun,`x`, `y`)(10,20);

Can opDispatch & chaining  be leveraged to get the effect of:
named!(fun).x(10).y(20).call();

Or maybe even simpler?
>
> But I'm not sure of all the pro and cons.


-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list