digitalmars.D.learn - method chaining
- spir (26/26) Nov 08 2010 Hello,
 - Steven Schveighoffer (7/27) Nov 08 2010 To the compiler, this means:
 - Tomek =?UTF-8?B?U293acWEc2tp?= (4/30) Nov 08 2010 C c = (new C(1)).set(3);
 
Hello,
I don't understand why the compiler refuses the code below, with the error
__trials__.d(33): found '.' when expecting ';' following statement
(Note that method set returns this.)
class C {
    int i,j;
    this (int i) {
        this.i =3D i;
    }
    C set (int j) {
        this.j =3D j;
        return this;
    }
    override string toString () {
        return format("C(%s,%s)", i,j);
    }
}
void main () {
    c =3D new C(1).set(3);	///////
    writeln(c);
}
Well, the example is somewhat artificial, but this idiom is highly useful.
Denis
-- -- -- -- -- -- --
vit esse estrany =E2=98=A3
spir.wikidot.com
 Nov 08 2010
On Mon, 08 Nov 2010 14:39:43 -0500, spir <denis.spir gmail.com> wrote:
 Hello,
 I don't understand why the compiler refuses the code below, with the  
 error
 __trials__.d(33): found '.' when expecting ';' following statement
 (Note that method set returns this.)
 class C {
     int i,j;
     this (int i) {
         this.i = i;
     }
     C set (int j) {
         this.j = j;
         return this;
     }
     override string toString () {
         return format("C(%s,%s)", i,j);
     }
 }
 void main () {
     c = new C(1).set(3);	///////
To the compiler, this means:
c = new (C(1).set(3));
What you want is:
c = (new C(1)).set(3);
Java implies this, but D does not.
-Steve
 Nov 08 2010
spir napisaĆ:
 Hello,
 
 I don't understand why the compiler refuses the code below, with the error
 __trials__.d(33): found '.' when expecting ';' following statement
 (Note that method set returns this.)
 
 class C {
     int i,j;
     this (int i) {
         this.i = i;
     }
     C set (int j) {
         this.j = j;
         return this;
     }
     override string toString () {
         return format("C(%s,%s)", i,j);
     }
 }
 
 void main () {
     c = new C(1).set(3);	///////
     writeln(c);
 }
 
 Well, the example is somewhat artificial, but this idiom is highly useful.
C c = (new C(1)).set(3);
-- 
Tomek
 Nov 08 2010








 
 
 
 "Steven Schveighoffer" <schveiguy yahoo.com> 