Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
February 07, 2012 post/pre-increment/decrement and property | ||||
---|---|---|---|---|
| ||||
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). |
February 07, 2012 Re: post/pre-increment/decrement and property | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vidar Wahlberg | 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. -- Robert http://octarineparrot.com/ |
February 07, 2012 Re: post/pre-increment/decrement and property | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Clipsham | 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.
|
February 08, 2012 Re: post/pre-increment/decrement and property | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timon Gehr | On 07/02/2012 23:04, Timon Gehr wrote: >> 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. So what's actually being asked is can the following happen then? ++foo; becomes: foo(foo + 1); -- Robert http://octarineparrot.com/ |
February 08, 2012 Re: post/pre-increment/decrement and property | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Clipsham | On 2012-02-08 01:50, Robert Clipsham wrote: > On 07/02/2012 23:04, Timon Gehr wrote: >>> 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. > > So what's actually being asked is can the following happen then? > > ++foo; > > becomes: > > foo(foo + 1); Yes, we need some form of property rewrite. Wasn't someone working on that? -- /Jacob Carlborg |
Copyright © 1999-2021 by the D Language Foundation