hashed array?

Rainer Schuetze r.sagitario at gmx.de
Wed Nov 14 11:15:53 PST 2012


On 11/14/2012 7:20 PM, Dmitry Olshansky wrote:
> 11/14/2012 9:44 PM, Andrei Alexandrescu пишет:
>>
>> This is new! What does this mean?
>>
>
> I'm sure it is nothing new. Basically AA is a reference type but it is
> auto-magically created on the first insertion. This is called magic null
> behavior.
>
> void foo(int[int] aa){
> //aa here is null
>      aa[1] = 1;
> //now the local aa points to a new hash-map
> }
>
> void main(){
>      int[int] map;
>      foo(map);
>      //map in this scope is still null
>      assert(1 in map); // fails
> }
>
>
> I'm in favor of implicitly allocating an AA on definition that'll make
> it a proper reference type.
>

I don't like the "magic null behaviour", but I see issues with this 
straight forward implementation: how can you define a statically 
initialized struct value (including init) that contains an associative 
array? It will have to run a default constructor to allocate the AA root 
object, introducing something like the often rejected user-defined 
default constructor for structs.


More information about the Digitalmars-d mailing list