On Monday, 26 September 2022 at 18:51:41 UTC, Ali Çehreli wrote:
>On 9/26/22 11:50, Dom DiSc wrote:
>if x is a property
(having a getter and a setter), ++x should work
That came up a couple of times on this thread.
Sounds easy to my ears. Is there a blocker for the implementation?
Ali
A nested struct can do this, but each field needs a new build. For example to Inner z
in code:
template foo(T)
{
struct Inner
{
T bar;
alias bar this;
auto opUnary(string op)()
if(op == "++")
{
++bar;
return this;
}
}
Inner z;
}
struct Outer(T)
{
T X, Y;
mixin foo!T s;
alias z = s.z;
auto x() { return X; }
auto x(T n) { return X = n; }
auto y() { return Y; }
auto y(T n) { return Y = n; }
}
import std.stdio;
void main()
{
auto outer = Outer!int();
with(outer)
{
x = 320;
y = 240;
z = 160;
z++;
writefln!"x = %s, y = %s, z = %s"
(x, y, z); // x = 320, y = 240, z = 161
}
}
SDB@79