Thread overview | |||||
---|---|---|---|---|---|
|
November 08, 2010 method chaining | ||||
---|---|---|---|---|
| ||||
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. Denis -- -- -- -- -- -- -- vit esse estrany ☣ spir.wikidot.com |
November 08, 2010 Re: method chaining | ||||
---|---|---|---|---|
| ||||
Posted in reply to spir | 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
|
November 08, 2010 Re: method chaining | ||||
---|---|---|---|---|
| ||||
Posted in reply to spir | 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 |
Copyright © 1999-2021 by the D Language Foundation