We can almost implement properties as a regular struct

struct prop
{
    int _val;
    ref prop opAssign( int a_val )
    {
        writeln("assignment = ", a_val );
        _val = a_val;
        return this;
    }
    int opCall()
    {
        writeln("opcall = ", _val );
        return _val;
    }

    // other op overloads, like ++, --, etc

}

If we change a few things it may work. Instead of struct it could be named prop

eg

prop P
{

   ...

}

opCall needs to be changed so there's no need to specify the (). No dounbt other changes will be needed too to make it more convenient to use and less error prone.

The advantage is that with a "property as a struct" implementation, you can wrap up a lot more than just a setter and getter around only one variable, eg internally there could be several vars or even none at all depending on the needs.

--rt

Reply via email to