Getting consistent behavour for class properties
    mikey via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sun Oct  2 10:10:58 PDT 2016
    
    
  
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.
    
    
More information about the Digitalmars-d-learn
mailing list