我刚刚学习了 PHP 中的静态变量 Ruby 中有类似的东西吗?
例如,如果我们想创建一个 Student类,并且对于我们创建的每个 student对象,它的 id 号应该自动递增。
Student
student
我认为创建静态类变量就可以了。
类变量在所有实例之间共享(这就是为什么它们被称为类变量) ,因此它们可以做您想做的事情。他们也是遗传的,有时会导致相当混乱的行为,但我不认为这将是一个问题在这里。下面是一个类的例子,它使用一个类变量来计算已经创建了多少个类实例:
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
使用公认的答案作为静态变量的定义可能是危险的,这是我在许多 Ruby 代码中看到的常见错误。
类似 @@foos的东西在 全部子类之间共享。但是,大多数程序员希望静态变量在定义它们的类中具有范围 只有。
@@foos
如果您正在寻找大多数语言意义上的静态变量,其范围只是它们自己的类,那么请看 这么回答
此外,这篇博客文章还提供了一个很好的例子,说明大多数程序员会得到的惊喜:
Http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/