在ruby的静态variables

我刚刚在PHP中了解了静态variables。 有没有像ruby那样的东西?

例如,如果我们要创build一个Student类,并为每个我们创build的student对象,它的ID号应该自动递增。

我认为创build类variables作为静态将做。

类variables在所有实例之间共享(这就是为什么他们被称为类variables),所以他们会做你想做的。 它们也是遗传的,有时会导致相当混乱的行为,但我不认为这会成为一个问题。 下面是一个类的例子,它使用一个类variables来计算它已经创build了多less个实例:

 class Foo @@foos = 0 def initialize @@foos += 1 end def self.number_of_foos @@foos end end Foo.new Foo.new Foo.number_of_foos #=> 2 

使用被接受的答案作为静态variables的定义可能是危险的,这是我在很多Ruby代码中看到的常见错误。

类似于@@foos东西在所有的子类中共享。 但是,大多数程序员希望静态variables在定义类的范围内才有作用域。

如果你正在寻找大多数语言意义上的静态variables,那么他们的范围只是他们自己的类,看看这个答案

另外这个博客文章有一个很好的例子,大多数程序员会得到惊喜:

http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/