DIP4: Properties
Michel Fortin
michel.fortin at michelf.com
Sat Jul 25 04:00:32 PDT 2009
On 2009-07-25 06:10:09 -0400, Michiel Helvensteijn
<m.helvensteijn.remove at gmail.com> said:
> It's a little better. But there's still ambiguity:
>
> interface I {
> int foo;
> int opSet_foo(int);
> }
>
> foo = 5; // which foo is used?
In the other thread, I suggested this, which could aleviate the problem:
int foo.opGet(); // getter
void foo.opAssign(int); // setter
with some support from the compiler.
It could even be exteded to support more:
int foo.opIndex(int); // foo[1];
void foo.opAddAssign(int); / foo += 1;
void foo.invert(); // special function attached to property
Basically, all you need to implement properties is not a dedicaced
"property" syntax, it's a syntax to implement some kind of local
namespace, and am "opGet" or "opValue" operator for representing the
local namespace. It could also be expressed like this:
namespace foo {
int opGet(); // getter
void opAssign(int); // setter
...
int opIndex(int); // foo[1];
void opAddAssign(int); / foo += 1;
void invert(); // special function attached to property
}
In both cases, the result would be the same:
foo = 1; // same as foo.opAssign(1);
return foo; // same as return foo.opGet();
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list