On 5/30/18 10:49 AM, DigitalDesigns wrote:
Does it sound good?
class X
{
double x;
@property X foo(double y) { x = y; return this; }
@property X bar(double y) { x = y + 5; return this; }
}
void main()
{
X x = new X();
x.foo(3).bar(4);
}
It sort of emulates UFCS but I'm not sure if it's more trouble than it's
worth.
I figure it would be better than just returning void as it provides the
option to chain but not sure if it will come back to bite me.
Yes, I do this kind of stuff, but you need to word your functions correctly.
I would avoid @property there, as this implies you should use it like:
x.foo = 5;
and if you return a reference to the type itself, it will read weird if
you do it that way:
auto five = (x.foo = 5);
Here the name of the function is really really important.
In my use case, I am kind of using it in an SQL builder type, where each
time you call a method it adds some piece of the query. Like:
auto query = table.select("id, name").where("foo = 5").orderBy("name");
-Steve