associative arrays: iteration is finally here

yigal chripun yigal100 at gmail.com
Wed Oct 28 09:11:05 PDT 2009


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

that looks neat. What's the mechanism to tie the templates to the syntax? 

I don't understand why all containers must provide a default range. What's the default for a binary tree?  it has several orderings (pre, post, infix) but i can't say that one is "more default" the the other.  




More information about the Digitalmars-d mailing list