November 08, 2010 Re: method chaining | ||||
---|---|---|---|---|
| ||||
On Monday, November 08, 2010 11:39:43 spir 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); ///////
> writeln(c);
> }
>
> Well, the example is somewhat artificial, but this idiom is highly useful.
>
>
> Denis
> -- -- -- -- -- -- --
> vit esse estrany ☣
>
> spir.wikidot.com
If you change it to (new C(1)).set(3), it should work. It should be noted, however, that there are several bugs relating to returning this from a function (primarily with regards to invariants IIRC), so method chaining doesn't always work when it should, but once the appropriate compiler bugs are fixed, it should work just fine.
- Jonathan M Davis
|
Copyright © 1999-2021 by the D Language Foundation