具有作用范围的语言,类生命时间变量

时间:2016-07-13 14:36:51

标签: oop programming-languages concept language-concepts

在询问this问题后,我只是想知道是否有任何语言都有这个概念。考虑这段任意代码:

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

关于我们是否可以用某种语言实现这一点有一些问题,但我无法找到任何语言是否有任何语言。 并且它不一定是面向对象的语言,出于显而易见的原因,我无法用这个概念来思考任何函数式语言,但是如果你可以做出类比,为什么不呢?

编辑:如果没有任何似乎,为什么不呢?我的意思是这个概念很简单。实际上,当我第一次在函数中使用静态变量时,我期待的是我在这里要求的相同行为。

0 个答案:

没有答案