On 6/23/16 6:46 PM, deadalnix wrote:
On Wednesday, 22 June 2016 at 15:39:11 UTC, Meta wrote:
If it is called with 0 arguments it will return null.

No it will  return empty string.

null is an empty string. And it does return null specifically.

This  behaviour has caused several bugs in my code because
combined with optional parens and UFCS, it is easy to accidentally
call text with 0 args but have it look like passing a variable to a
function. An example bug that I recently found in my code:


This is a problem with optional (), not text.

A valid point. But we aren't going to have this change.

test takes n parameters and return a string representation of these
parameters. returning an empty string when no parameters is provided is
very much expected.

If it has to be valid, this is what I would expect, yes. But it doesn't have to be valid.

The only place I can see this being useful is generic code which itself takes a tuple.

The alternative is to add special case. And here you get into the bad
design land. When some bad design is introduced it causes problems. Now
there is the option to introduce more and more bad design to work around
the original bad design, or adopt a principled approach. I'd rather go
for #2 . if I wanted #1, I'd be using C++ or PHP, which both fit that
spot better than D.

It's not a special case to require a minimum number of parameters.

When the solution to a problem is adding more special casing, you can be
sure you are not moving in the right direction.

There is already a special case for zero arguments -- a whole static if branch, in fact.

-Steve

Reply via email to