On Saturday, 2 February 2013 at 22:18:52 UTC, Jonathan M Davis wrote:
On Saturday, February 02, 2013 10:14:29 TommiT wrote:
I propose we just forget about the whole concept of a property

I think that this proves that the property discussion has gotten way out of hand.

I don't see that quoted sentence of mine as a proof that the discussion has gotten out of hand. It only shows that I personally think that memberspaces are semantically such a close match to the concept of properties, that I don't see any reason to think of them as different things.

BTW, given that we fix the @property attribute, would the line:
s.prop += 3;
...call:
1) s.prop( s.prop + 3 );
...or:
2) s.prop().opOpAssign!"+"(3);
...in the code snippet below:

struct T
{
    private int _value;

    ref T opAssign(int rhs)
    {
        _value = rhs;
        return this;
    }

    ref T opOpAssign(string op)(int rhs)
        if(op == "+" || op == "-")
    {
        mixin("_value" ~ op ~ "= rhs;");
        return this;
    }

    T opBinary(string op)(int rhs) const
        if(op == "+" || op == "-")
    {
        T t = this;
        mixin("t._value" ~ op ~ "= rhs;");
        return t;
    }
}

struct S
{
    private T _t;

    @property ref T prop()
    {
        return _t;
    }

    @property void prop(int v)
    {
        _t = v;
    }
}

void main()
{
    S s;
    s.prop += 3; // ?
}

Reply via email to