On 02/07/2012 11:54 PM, Robert Clipsham wrote:
On 07/02/2012 22:37, Vidar Wahlberg wrote:
Take the following code:
int _foo;
@property auto foo() {
return _foo;
}
@property auto foo(int foo) {
return _foo = foo;
}
void main() {
++foo;
}


This won't compile, and it sort of makes sense (at least to me), but is
it (or will it in the future be) possible to achieve this in some way?

I like to encapsulate class/struct members this way so I can easily add
validation of the value in the setter at a later time (granted, I can
add getter/setter properties when it turns out that I do need to
validate the values, but that's beside the point).

Try this:
----
int _foo;
@property ref foo() {
return _foo;
}
@property ref foo(int foo) {
return _foo = foo;
}
void main() {
++foo;
}
----

Using 'ref' instead of auto returns a reference to _foo, allowing it to
be modified.


Yes, but then he cannot verify the new value.

Reply via email to