It is a bug ?

Du Liang duliang.21 at 163.com
Wed May 6 22:01:35 PDT 2009


grauzone Wrote:

> Denis Koroskin wrote:
> > On Wed, 06 May 2009 19:33:03 +0400, Jarrett Billingsley <jarrett.billingsley at gmail.com> wrote:
> > 
> >> On Wed, May 6, 2009 at 10:06 AM, Du Liang <duliang.21 at 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();
>     }
> }

Thanks!



More information about the Digitalmars-d mailing list