ruby中的静态变量是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

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

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

我认为创建类变量是静态的。

提问于
用户回答回答于

将公认的答案用作静态变量的定义可能很危险,这是我在很多Ruby代码中看到的常见错误。

类似的东西@@foos所有的子类中共享。但是,大多数程序员希望静态变量在定义类的范围内具有范围。

用户回答回答于

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

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

扫码关注云+社区