On Tuesday, 20 July 2021 at 09:24:07 UTC, Mark Lagodych wrote:
Is there a way to make myvar local to each instance of `X` without making it a variable of `X`? Just curious.

Sorry if I missed something obvious but is there a specific reason why it isn't just a class member variable?
```d
class X {
        int myvar = 1234;

        int x(int param) {
                if (param == 0) return myvar;
                else { myvar = param; return myvar; }
        }
}
```
??

Why would you need a static variable inside a method but also have that static variable unique to each class instance, but not stored inside the class? I could see maybe if the class definition were private and you can't change it, in which case you could extend it:

```d
class X {
        // Someone else's module
}

class MyX : X {
        int myvar = 1234;

        int x(int param) {
                return param ? myvar = param : myvar;
        }
}

void main() {
        auto x1 = new MyX();
        auto x2 = new MyX();

        x1.x(0).writeln;
        x2.x(0).writeln;

        x1.x(17).writeln;
        x2.x(0).writeln;
}
```

Reply via email to