Plot2kill 0.2
Michel Fortin
michel.fortin at michelf.com
Sat Mar 5 14:51:42 PST 2011
On 2011-03-05 16:49:30 -0500, dsimcha <dsimcha at yahoo.com> said:
> On 3/5/2011 4:42 PM, Michel Fortin wrote:
>> I've always been on the fence about this. I find it useful too, and I
>> like the visual effect of optional parenthesis. But returning anything
>> that is callable make things ambiguous to the reader and can even bring
>> bugs when it comes to generic programming; and ambiguity and bugs are
>> things I really don't want to see.
>
> So? Make the semantics of @property one-way instead of two-way and
> make it a best practice to always use it in generic code. @property
> functions **can't** be called with (), but ()s are **optional** for
> stuff not marked @property.
There's still a small ambiguity with functions returning callable
types. For instance, if you have a template defining a property of a
parametrized type, forgetting to add @property to the getter could
result in buggy behaviour with a callable type but work fine with
everything else. Is making parenthesis optional worth making this kind
of bug easier to slip by, I wonder.
That said, () being optional doesn't help you use setters with
chaining. You'd have to not label your setters with @property for them
to work with chaining, unless you want to play with a lot of nested
parenthesis.
(((Graph().title = abc).xTitle = def).yTitle = hij);
Wow, that looks almost like Objective-C!
This discussion should probably happen somewhere else than the
announcement forum though.
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d-announce
mailing list