Denis Koroskin wrote:
On Wed, 06 May 2009 19:33:03 +0400, Jarrett Billingsley
<jarrett.billings...@gmail.com> wrote:
On Wed, May 6, 2009 at 10:06 AM, Du Liang <duliang...@163.com> wrote:
int[] arrB = [2,2,2]; // arrB is static in[] or bug ?
Declaring the variable like this uses a single array for all instances
of AB. You should initialize it in this() instead, or put "arrB =
arrB.dup;" in this().
I believe this is a horrible inconsistency. It shouldn't be allowed in first
place, because typeof([2,2,2]) is immutable(int)[] in this context.
DWIM would be to let the compiler automatically move these instructions
into all ctors.
class A {
int[] arrB = [2,2,2];
X x = new X();
this() {
code1();
}
this(int) {
code2();
}
}
would be transformed into
class A {
int[] arrB;
X x;
this() {
arrB = [2,2,2];
x = new X();
code1();
}
this(int) {
arrB = [2,2,2];
x = new X();
code2();
}
}