Associative arrays
Paul Backus
snarwin at gmail.com
Tue May 18 22:03:46 UTC 2021
On Tuesday, 18 May 2021 at 19:34:45 UTC, Chris Piker wrote:
> So if I understand correctly, the idea is to get rid of AAs and
> replace them with moral equivalent of a Java HashMap. I'm
> guessing this means array index and assignment would become
> something like:
>
> ```d
> value = aa(key);
> aa(key, value);
> ```
> and AAs as a language construct would disappear. Or would the
> current syntax remain via CTFE?
D allows overloading the index operator, so you would still be
able to write
value = aa[key];
aa[key] = value;
As far as I know the only thing D's operator overloading doesn't
support that the built-in AA syntax does is insertion of values
into nested AAs with a single assignment:
bool[string][string] aa; // NB: empty AA of AAs
aa["foo"]["bar"] = true; // assigns both aa["foo"] and
aa["foo"]["bar"]
With a library type, you would instead have to write:
Map!(string, Map!(string, bool)) aa;
aa["foo"] = new Map!(string, bool);
aa["foo"]["bar"] = true;
More information about the Digitalmars-d
mailing list