Behaviour of AAs after initialization

Ary Borenszweig via Digitalmars-d digitalmars-d at puremagic.com
Thu Aug 7 12:27:09 PDT 2014


On 8/7/14, 3:57 PM, Andrei Alexandrescu wrote:
> On 8/7/14, 10:35 AM, Puming wrote:
>> On Thursday, 7 August 2014 at 16:53:24 UTC, H. S. Teoh via Digitalmars-d
>>> It's really just the .init value of null which causes odd behaviour with
>>> empty AA's. Fun fact:
>>>
>>>     void changeAA(int[string] aa) {
>>>         aa["a"] = 123;
>>>     }
>>>
>>>     // Null AA:
>>>     int[string] aa1; // null
>>>
>>>     assert(aa1.length == 0);
>>>     changeAA(aa1);    // no effect
>> for most of the new users the WAT part is actually here :-)
>
> One function we could and should use is one that makes an AA that is
> empty but not null. Right now one needs to use goofy methods such as
> adding and then removing a key. -- Andrei

It still won't be intuitive for newcomers or for anyone not knowing that 
function.

I would invert it: declaring an associative array makes it non-null. 
Then you can choose, with a function, to initialize to null.

This would follow the principle of least surprise.


More information about the Digitalmars-d mailing list