Can static variables in methods be local for each object?
bauss
jj_1337 at live.dk
Tue Jul 20 10:04:35 UTC 2021
On Tuesday, 20 July 2021 at 09:24:07 UTC, Mark Lagodych wrote:
> Let's say I have this code:
> ```d
> import std.stdio;
>
> class X {
>
> int x(int param) {
> static int myvar = 1234;
>
> if (param == 0) return myvar;
> else { myvar = param; return myvar; }
> }
>
> }
>
> void main()
> {
> X x1 = new X;
> X x2 = new X;
>
> x1.x(0).writeln;
> x2.x(0).writeln;
>
> x1.x(17).writeln;
> x2.x(0).writeln;
> }
> ```
>
> Is there a way to make myvar local to each instance of `X`
> without making it a variable of `X`? Just curious.
The only way I can think of is something like this:
```
import std.stdio;
interface X
{
int x(int param);
}
class XImpl(size_t n = 0) : X {
int x(int param) {
static int myvar = 1234;
if (param == 0) return myvar;
else { myvar = param; return myvar; }
}
}
void main()
{
X x1 = new XImpl!1;
X x2 = new XImpl!2;
x1.x(0).writeln;
x2.x(0).writeln;
x1.x(17).writeln;
x2.x(0).writeln;
}
```
Of course it's not entirely what you want but yeah I think that's
about the closest to a solution that isn't overcomplicated.
More information about the Digitalmars-d-learn
mailing list