On 2009-07-25 06:10:09 -0400, Michiel Helvensteijn
<[email protected]> 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
[email protected]
http://michelf.com/