On Monday, 19 November 2012 at 17:42:28 UTC, Dmitry Olshansky wrote:
11/19/2012 7:18 PM, monarch_dodra пишет:
On Monday, 19 November 2012 at 14:58:29 UTC, Andrei Alexandrescu wrote:
On 11/19/12 4:01 AM, monarch_dodra wrote:
I kind of agree with Jonathan here. @property really shines when you
want to "add" an attribute to a struct.

I kind of agree with him, too, but it would be a mistake to not reckon a change in dynamics. UFCS makes all those extra parens just awkward,
and people will vote with their code regardless whether some
particular viewpoint from some particular angle considers the approach
backwards.

Andrei

One of the things that we may want to take into account, is that
-property prevents any existing function from migrating to/from
property. For example, if we want to make "retro" a property, we can't
without breaking any and all UFCS usage of retro.


The major problem about @property enforcement as it stands is that it breaks the duality of things like retro:
a.retro
vs
retro(a)

Both should be allowed as it's a matter of taste that shouldn't be enforced. A lot of new code uses a.retro and a lot of older code uses retro(a).

If retro is property then only the first one compiles
If retro is a function then only the second one compiles.

Which obviously means @property has to be reconsidered.

Hum... Perhaps you meant:
a.retro
vs
a.retro()
???

Because "retro(a)" works regardless of the property.


Reply via email to