Really nooB question - @property

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jul 20 11:23:56 PDT 2014


On 07/20/2014 11:14 AM, Eric wrote:
 >
 >> Use @property when you want a pseudo-variable or something that might
 >> be conceptually considered a "property" of the object, i.e. to do this:
 >>
 >> auto blah = thing.someProperty;
 >> thing.someProperty = blahblah;
 >
 > This is basically what I suspected.  But why
 > write:
 >
 > @property int getValue() { return(value); }
 >
 > When you could just have a public field:
 >
 > int value;
 >
 > That lets you set and get the value without the parens anyways?

Freely setting a member makes sense only in limited cases where that 
member does not take any part in any invariant of the object. For 
example, if a Rectangle class has .length, .width, and .area, it would 
be an error to set either of them.

Additionally, properties enable one to make it look like a type has such 
a member:

struct Rectangle
{
     // ...

     @property int area()
     {
         return length * width;
     }
}

Ali



More information about the Digitalmars-d-learn mailing list