associative arrays: iteration is finally here

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Oct 28 07:48:22 PDT 2009


Pelle Månsson wrote:
> Andrei Alexandrescu wrote:
>> Walter has magically converted his work on T[new] into work on making 
>> associative arrays true templates defined in druntime and not 
>> considered very special by the compiler.
>>
>> This is very exciting because it opens up or simplifies a number of 
>> possibilities. One is that of implementing true iteration. I actually 
>> managed to implement last night something that allows you to do:
>>
>> int[int] aa = [ 1:1 ];
>> auto iter = aa.each;
>> writeln(iter.front.key);
>> writeln(iter.front.value);
>>
>> Two other iterations are possible: by key and by value (in those cases 
>> iter.front just returns a key or a value).
>>
>> One question is, what names should these bear? I am thinking of makign 
>> opSlice() a universal method of getting the "all" iterator, a default 
>> that every container must implement.
>>
>> For AAs, there would be a "iterate keys" and "iterate values" 
>> properties or functions. How should they be called?
>>
>>
>> Thanks,
>>
>> Andrei
> aa.each, aa.keys and aa.values seem good names?

The latter two would break existing definitions of keys and values.

> Also, foreach with a single variable should default to keys, in my opinion.

That is debatable as it would make the same code do different things for 
e.g. vectors and sparse vectors.


Andrei



More information about the Digitalmars-d mailing list