When are associative arrays meant to throw a RangeError?

Ben Davis entheh at cantab.net
Sat Feb 18 11:15:28 PST 2012


On 18/02/2012 13:22, Daniel Murphy wrote:
> "Ben Davis"<entheh at cantab.net>  wrote in message
> news:jho2mf$2a1t$1 at digitalmars.com...
>> Starting with magic initialisation then...
>>
>
> I meant a different magic initialization:
> int[int] aa = null;
> aa[3] = 7; // aa is magically not null any more

I've seen some line-blurring between 'null' and 'empty' for dynamic 
arrays (non-associative). Specifically, I read that array.init returns 
null for both static and dynamic, but I think I also read that a dynamic 
array's default value is the empty array. I also observed that null~[1] 
== [1], and I wondered if actually 'null' becomes an empty array when 
cast to dynamic array and they're effectively the same thing.

If I'm right, then the same could be true for assoc arrays - that 'null' 
cast to an assoc array type becomes an empty assoc array. Which would 
explain the magic you're seeing.


More information about the Digitalmars-d mailing list