Wrong lowering for a[b][c]++
H. S. Teoh
hsteoh at quickfur.ath.cx
Wed Mar 21 12:00:36 PDT 2012
On Wed, Mar 21, 2012 at 07:29:44PM +0100, David Nadlinger wrote:
> On Wednesday, 21 March 2012 at 18:27:30 UTC, H. S. Teoh wrote:
> >A question was asked on the d-learn forum about why this throws a
> >RangeError:
> >
> > int[string][int] map;
> > map["abc"][20]++;
>
> Wait a second – aren't AAs _supposed_ to throw if accessing a key
> that doesn't exist yet? To be able to increment something, there
> already has to be a value to start from…
[...]
If it doesn't exist, it should default to typeof(value).init, IMO.
But perhaps that was the wrong example to use. What if you wanted to do
this:
map["abc"][20] = 1;
Currently this doesn't work. You have to explicitly create map["abc"]
first.
T
--
Time flies like an arrow. Fruit flies like a banana.
More information about the Digitalmars-d
mailing list