如果你环顾四周,你find some comparisons of class variables to class instance variables,我听过的关于类变量的最好的是“那可能就是你想要的”,但我从来没有听到有人说是他们想要什么,或者在整个继承树中共享变量的情况可能更有用。
那么在实践中,什么时候类变量比类实例变量更好?
答案 0 :(得分:1)
另一个例子(你想要每个对象的唯一名称)
class Foobar
@@uniqueId = 0
def initialize
@@uniqueId += 1
end
def unique_name
"Foobar_" + @@uniqueId.to_s
end
end
a = Foobar.new
puts a.unique_name
a = Foobar.new
puts a.unique_name
这将输出
Foobar_1
Foobar_2
编辑:单例模式也是静态变量link
的好例子答案 1 :(得分:0)
最简单的示例是您使用类变量来存储该类的一些概述状态或所有实例的共享状态。
class Foobar
@@total = 0
def initialize
@@total += 1
end
class << self
def all
@@total
end
end
end
5.times { Foobar.new }
Foobar.all #=> 5
所以这里 @@ total 将显示已创建的实例数量。
Rails' ActiveRecord#FinderMethods#all 只返回数组的大小。但是如果类的所有实例都没有包装在数组中,那么使用类变量返回“all”也是一种解决方案。