On Wed, Mar 21, 2012 at 07:56:47PM +0100, Andrej Mitrovic wrote: > On 3/21/12, H. S. Teoh <hst...@quickfur.ath.cx> wrote: > > int[string][int] map; > > map["abc"] = int[int].init; > > map["abc"][30] = 123; > > I think you meant: > > int[int][string] map; > map["abc"] = (int[int]).init; > map["abc"][30] = 123;
Yes, I did. :-) > You can however init with null if the value is a hash: > > int[int][string] map; > map["abc"] = null; > map["abc"][30] = 123; > > But otherwise I agree it would be nice if there was a shortcut for this. Without this "shortcut", it's a complete pain to deal with deeply-nested AA's: int[int][int][string] map; void inc_frequency(string entry, int x, int y) { if (entry in map) { if (x in map[entry]) { if (y in map[entry][x]) { map[entry][x][y]++; } else { map[entry][x][y] = 1; } } else { map[entry][x] = null; map[entry][x][y] = 1; } } else { map[entry] = null; map[entry][x] = null; map[entry][x][y] = 1; } } whereas if this was supported, the code would simply be: void inc_frequency(string entry, int xcoor, int ycoor) { map[entry][x][y]++; } (And the above example is only 3 levels deep... it gets exponentially worse with every level of nesting.) T -- Mediocrity has been pushed to extremes.