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

Timon Gehr timon.gehr at gmx.ch
Thu Jul 4 05:42:50 PDT 2013


On 07/04/2013 01:50 PM, Steven Schveighoffer wrote:
> On Thu, 04 Jul 2013 05:25:30 -0400, Regan Heath <regan at netmail.co.nz>
> wrote:
>
>> On Wed, 03 Jul 2013 19:10:40 +0100, bearophile
>> <bearophileHUGS at lycos.com> wrote:
>>> Telling apart the literal for an empty array from the literal of a
>>> empty but not null array is a bad idea that muds the language. And
>>> thankfully this currently fails:
>>>
>>> void main() {
>>>      int[] emptyArray = [];
>>>      assert(emptyArray !is null);
>>> }
>>
>> As this comes up often you're probably aware that there are people
>> (like myself) who find the distinction between a null (non-existant)
>> array and an empty array useful.
>
> Nobody questions that.  The biggest problem is making if(arr) mean
> if(arr.ptr) instead of if(arr.length)
>

if(arr.ptr) is what it means now.

> What [] returns should not be an allocation.  And returning null is a
> reasonable implementation of that.
>
> -Steve

static __gshared void[1] x;
return x[0..0];


More information about the Digitalmars-d mailing list