Will D ever get optional named parameters?
Meta via Digitalmars-d
digitalmars-d at puremagic.com
Mon Oct 13 12:26:33 PDT 2014
On Monday, 13 October 2014 at 19:18:39 UTC, Walter Bright wrote:
> Nothing requires function overloads to use the same names in
> the same order for parameters. "color" can be the name for
> parameter 1 in one overload and for parameter 3 in another and
> not be there at all for a third.
>
> Parameters need not be named in D:
>
> int foo(long);
> int foo(ulong x);
>
> Named parameters are often desired so that default arguments
> need not be in order at the end:
>
> int foo(int x = 5, int y);
> int foo(int y, int z);
>
> To deal with all this, a number of arbitrary rules will have to
> be created. Overloading is already fairly complex, with the
> implemented notions of partial ordering. Even if this could all
> be settled, is it worth it? Can anyone write a document
> explaining this to people? Do people really want pages and
> pages of specification for this?
If you have several functions that take optional arguments, like
the following:
int foo(bool b = false, int n, float f = 0.0f);
int foo(float n, bool b = false, float f = 0.0f);
foo(2, b: true);
foo(3.0f, f: 1.0f);
Wouldn't it only be necessary to overload on the non-optional
arguments? Extending this, if a functional has only optional
arguments, then there can only be one version of it.
int foo(int n = 0, bool b = false, float f = 0.0f);
//Error: cannot overload two functions with no non-optional
parameters.
int foo(float n = 0.0f, bool b = false, float f = 0.0f);
More information about the Digitalmars-d
mailing list