Associative array of dynamic array

bearophile bearophileHUGS at lycos.com
Sun Sep 9 06:49:23 PDT 2012


Philippe Sigaud:

> Keep in mind all these structures (AA and dynamic arrays) are
> reference types.

There are bug-prone things you have to keep in mind.

Not exactly a reference type, this is by D specs:


import std.stdio;
import std.array: popFront;
void main() {
      auto d = [1:[2, 3]];
      auto l = d[1];
      auto l2 = l[0];
      l.popFront();
      writeln(d, "  ", l, "  ", l2);
}


Even AAs (I don't know if this is an implementation bug or if 
this is by D specs, opinions welcome):

void test(int[int] arraya, int x) {
      arraya[x] = x;
}
void main() {
      int[int] d;
      test(d, 0);
      int[int] d0;
      assert(d == d0); // d is empty, 0:0 is lost
      d[1] = 1;
      test(d, 2);
      assert(d == [1: 1, 2: 2]); // now 2:2 is not lost
}

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list