我刚学会了php中的静态变量.红宝石中有类似的东西吗?
例如,如果我们想要为我们创建的Student每个student对象创建一个类,它的id号应该自动增加.
我认为创建类变量作为静态会做.
sep*_*p2k 107
类变量在所有实例之间共享(这就是它们被称为类变量的原因),因此它们可以执行您想要的操作.它们也是遗传的,有时会导致相当混乱的行为,但我认为这不会成为一个问题.下面是一个类的示例,该类使用类变量来计算已创建的实例数:
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
Run Code Online (Sandbox Code Playgroud)
Sys*_*ank 14
使用接受的答案作为静态变量的定义可能很危险,这是我在很多Ruby代码中看到的常见错误.
类似的东西@@foos在所有子类之间共享.但是,大多数程序员都希望静态变量只在定义它们的类中具有范围.
如果您正在寻找大多数语言意义上的静态变量,其范围只是他们自己的类,请查看此SO答案
此博客文章也有一个很好的例子,大多数程序员会得到惊喜:
http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/
| 归档时间: |
|
| 查看次数: |
76599 次 |
| 最近记录: |