[:] as empty associative array literal, plus warning for null

monarch_dodra monarchdodra at gmail.com
Thu Jul 4 07:11:49 PDT 2013


On Thursday, 4 July 2013 at 13:32:25 UTC, Steven Schveighoffer 
wrote:
>> Indeed.  IMO if(arr) should mean if(arr.ptr) .. and I thought 
>> it did.. or did this change at some point?
>
> No, it should mean if(arr.length).

*I* think it should simply mean compilation error. There is, 
arguably, a "big" difference between null and empty:

null means not yet initialized, whereas empty means initialized, 
but contains no info. This is an important distinction for things 
such as lazy initialization, or just plain checking data 
integrity. It can also mean important distinctions for 
serialization, such as JSON or xml, to differentiate between an 
null node, or a node that contains nothing.

A slice is the abstraction of both pointer and container. Wanting 
to test null pointer or empty are both legitimate operations.

IMO, you should have to state which you want. Making arbitrary 
choices for the user in the face of ambiguity is evil.


More information about the Digitalmars-d mailing list