Ali Cehreli wrote:
Does the expression [ 0, 1, 2 ] form an immutable array? If so, is the 
assignment to a[0] undefined below? Is it trying to modify an immutable element?

    int[] a = [ 0, 1, 2 ];
    a[0] = 42;

The reason for my thinking that [ 0, 1, 2] is an array is because it has the 
.dup property and this works too:

    int[] a = [ 0, 1, 2 ].dup;

Thank you,
Ali



Nope, it's an ordinary, mutable array. :) To create an immutable array you can do like this:

  // This is an immutable array of ints:
  immutable int[] a = [ 0, 1, 2 ];

  // This is an array of immutable ints:
  immutable(int)[] a = [ 0, 1, 2 ];

The .dup property simply creates a copy of the array, which can be useful whether the array is immutable or not.

(Note that there will be some changes in array syntax/semantics from the next version of DMD2. In particular, arrays of type T[] will be unresizable. Resizable arrays will have a new type, denoted T[new].)

-Lars

Reply via email to