On 2013-02-09 15:30:13 +0000, "deadalnix" <[email protected]> said:

On Saturday, 9 February 2013 at 12:44:35 UTC, Michel Fortin wrote:
I believe both module-level properties and UFCS properties to be desirable. So is the idea put forward in DIP26 that reduces boilerplate code. The question is how do we put all that together.

Well design is a balance between conflicting goals. Allowing both cause an extra complication. So the win have to actually be carefully considered.

Only because of the constrains people seem to have wrapped themselves into. If you want to use @property to designate a property (which doesn't distinguish setter and getter) then you run in the problem of not being able to distinguish UFCS getter from non-UFCS setter. So of course if you impose yourself the constrain of having something ambiguous you need some other rule to disambiguate.


@properties as UFCS are almost mandatory. They are used everywhere, especially for arrays.

Setters or getters? UFCS "getters" are not a problem with this DIP. Quoting my other post:

So whether a getter is a property or not does not change anything at the call site, meaning that UFCS getters (or any getter with no associated setter for that matter) don't need to be properties. What remains is that you can't write UFCS *setters*. But UFCS setters are definitely less common, and if that's really important I guess it could be solved though separate means.

So in short, this proposal is that @property does only two things when applied to a function: it enables the setter syntax and it changes the overload rules.



--
Michel Fortin
[email protected]
http://michelf.ca/

Reply via email to