On Tuesday, 12 July 2022 at 19:55:46 UTC, ag0aep6g wrote:
On Tuesday, 12 July 2022 at 19:02:01 UTC, user1234 wrote:
On Tuesday, 12 July 2022 at 16:40:38 UTC, H. S. Teoh wrote:
[...]
Do not rely on this, however;

Absolutely. I'd like to add: especially as default parameter value that's an array. Never use null. use `[]` (empty array literal).

Just to be clear: `[]` and `null` are the exact same thing (null pointer, zero length). The reason to prefer `[]` over `null` is purely for readability. The meaning is exactly the same.

ah yes. The case I thought to was actually

```d
void test1(string s = null)
{
    assert(s is null);
}

void test2(string s = "") // s is null term'ed, i.e not null
{
    assert(s is null);
}

void main()
{
    test1();
    test2(); // fails
}
```

the rule of thumb is to use `stuff.length` as condition, always, and not `stuff` itself, to prevent natyx, hard to find bugs.

Reply via email to