On Monday, 7 April 2014 at 20:00:39 UTC, Meta wrote:
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.
I like this a lot more. It looks similar to the associative array
literal syntax, which is fitting.