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.