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