On Thu, 15 Jul 2010 09:16:47 -0400, dsimcha <dsim...@yahoo.com> wrote:
Once property syntax is fully enforced (not necessarily recommended)
will it
be possible to overload properties against non-properties? My use case
is
that I'm thinking about API improvements for my dflplot lib and one
thing that
I would really like is to give a fluent interface to everything to
further cut
back on the amount of boilerplate needed to generate simple plots. For
example:
Histogram(someData, 10)
.barColor(getColor(255, 0, 0))
.histType(HistType.Probability)
.toFigure.title("A Histogram")
.xLabel("Stuff").showAsMain();
The problem is that I also want things like barColor and title to be
settable
via normal property syntax, using the equals sign. Right now, this "just
works" because D's current non-analness about enforcing @property-ness is
awesome 99% of the time even if it leads to a few weird corner cases.
Will
there be a way to express such an interface to be provided (calling a
setter
as either a member function or a property at the user's choice) once
@property
is fully implemented?
I would say no. A property is not meant to be a function or vice versa.
Also, a property setter should either return void or the type it's setting.
I would suggest the following model:
@property int x(int i);
typeof(this) setX(int i);
This looks good IMO when used:
int m = c.x = 5;
c.setX(5).setY(6);
I used this in tango.sys.Process to set various parameters for process
creation.
-Steve