On Sunday, 2 October 2016 at 14:44:13 UTC, Lodovico Giaretta wrote:
Yeah, a property is quite different from a variable. In fact, a property may refer to a computed value, which may not have an address and as such cannot be modified:
[...]
So it is correct that `+=` doesn't work with properties, and neither does the "addressof" operator `&` (it returns the delegate). Having a getter property return by ref circumvents this issue, but has the drawback of bypassing any check that a setter property would do.

There is already a degree of transparency with how properties being handled for example in allowing properties to be an lvalue if they have a setter.

    t.val = 42;

I can understand that on an implementation level it might be simpler to interpret the 2 statements differently but it would seem much more intuitive to me if the syntactic sugar for properties were extended out to allow statements such as:

    t.val += 1;

Where there is a getter and setter available.

To my mind at least the ideal would be for properties to act as close as possible to member variables.

It is however good to see that it's possible to wrap functions to provide some of this behaviour.




Reply via email to