Dream Feature Regarding Default Arguments

Meta jared771 at gmail.com
Mon Apr 7 13:00:38 PDT 2014


On Monday, 7 April 2014 at 19:47:24 UTC, Frustrated wrote:
> it would be relatively easy.
>
> void myfunc(name = int x) { }
>
> instead of
>
> void myfunc(int x) { }
>
> then
>
> myfunc(name = 4);
>
> or one could simply use the variable name
>
> void myfunc(int x) { }
>
> myfunc(x = 3);
>
>
> Of course assignments may not be valid, one could use := 
> instead.
>
> myfunc(x := 3);
>
>
>
> One could build a template to do it how were but it would 
> require calling the function as a string,
>
> e.g., template is passed the call as a string. The template 
> gets the name of the function, looks up the parameter names, 
> parses the arguments and generates the proper call string which 
> is then mixed in.
>
> e.g., Named(q{myfunc(x := 3)}); => myfunc(3);

C# uses <name>:, like the follow.

void TestFun(int i, string s = "", bool b)
{
     //...
}

TestFun(i: 1, b: false);

Is there any reason not to use this syntax? It doesn't *seem* to 
conflict with anything else.


More information about the Digitalmars-d mailing list