问了这个问题后,我只是想知道是否有任何语言有这个概念。考虑这段任意代码:
class Foo {
void bar() {
static int i = 0;
print(i++);
}
}
Foo foo = new Foo();
foo.bar(); // prints 0
foo.bar(); // prints 1
Foo foo2 = new Foo();
foo2.bar(); // prints 2
foo2.bar(); // prints 3
因此,静态i
变量在 Foo 类的所有实例之间共享,它的生命周期从第一次遇到开始并持续很长时间。我想知道的是,是否有任何语言可以some_magic_keyword
定义变量,使变量函数作用域并使其生命周期等于它的类生命周期,而不是在类的实例中共享它。所以代码可以是这样的:
class Foo {
void bar() {
some_magic_keyword int i = 0;
print(i++);
}
}
Foo foo = new Foo();
foo.bar(); // prints 0
foo.bar(); // prints 1
Foo foo2 = new Foo();
foo2.bar(); // prints 0
foo2.bar(); // prints 1
delete foo2; // the "i" variable is also deleted from memory, so no memory leaks
有一些关于我们是否可以用某种特定语言实现它的问题,但我找不到任何询问是否有任何语言有它。而且它不一定是面向对象的语言,出于显而易见的原因,我想不出任何具有此概念的函数式语言,但是如果您可以进行类比,为什么不呢?
编辑:如果没有任何看起来像,为什么不呢?我的意思是这个概念非常简单。实际上,当我第一次在函数中使用静态变量时,我期待的行为与我在这里问的相同。