On Wednesday, 15 August 2018 at 15:31:14 UTC, 0xEAB wrote:
On Wednesday, 15 August 2018 at 14:58:40 UTC, Everlast wrote:
foo(x = 3);


C# 7 brought something similar for out params.
int.tryParse("1234", out int myNum);

Based on this approach, I would argue, that a reasonable syntax would also contain the type, which leads to something like the following:
foo(int x = 3);
foo(auto x = 3);


But I don't think this feature is worth having in D.

The whole point of the syntax is just sugar... although it does reduce dependency issues ever so slightly. If one has to declare the type it reduces it's effectiveness. Of course, if it is necessary for some reason then it can be used. It obviously helps reduce ambiguities but since D can infer the type from the function then it shouldn't be necessary(but could be optional). Basically auto could be implied when not explicit. This is a little different than an isolated definition because D can infer the type here in most cases(maybe templates would cause grief though).

The point one really has to ask is what problems does it solve and what problems does it create.

The problems it solves can be reduced typing and better localization. It is minor, not a huge advancement, but the path to heaven is paved with small stones.

The problems it creates: I can't think of any that do not already steam from the base problem. If D has assignment syntax that can be used inside function arguments then it would be ambiguous and in that case the type would need to be required to solve that problem.


Reply via email to