El 21/03/2012 19:29, H. S. Teoh escribió:
A question was asked on the d-learn forum about why this throws a
RangeError:

        int[string][int] map;
        map["abc"][20]++;


IIRC, that worked fine for me a few weeks ago. And I found it to be just great that it did. I'll have to re-check but I remember it like this.

I had to produce a new tabular dataset from an original by accumulating elements (rows) sharing some attribute values.

The idea was to read that line by line, split into attributes and do:

 // this will hold the counts:

 int[int][int][int][string] count;

 // for each row, split field1 .. field5 (field4 is a string)

 count[field1][field2][field3][field4] += field5;


And that just worked IIRC, without initializing anything!

At the end, to iterate all the hyper map and write it out, we used nested foreachs, something like:

foreach(field1, item1; count)
    foreach(field2, item2; item1)
        foreach(field3, item3; item2)
            foreach(field4, field5; item3)
                writeln(field1, field2, field3, field4, field5);

I'm trying to remember if we had to do something special to make it work...

Reply via email to