class Counter
def self.counted_new
@count = 0 if @count.nil?
@count += 1
new
end
def self.count
@count
end
end
在格式上,@count
看起来像一个实例变量,但是当我在 "irb"(即时 Ruby 解释器)中加载它并输入四条命令代码时:
Counter.counted_new
Counter.count
Counter.counted_new
Counter.count
@count
最终变成了 2!类似于类变量的行为
@blah
是实例变量。 - Peter ZhuFoo
的新的Counter
实例,那么Foo
中的@count
实例与类中的@count
实例不共享同一数据字段。这是正确的吗? - Peter ZhuCounter.new
创建一个新的 Counter 实例,那么该计数器就没有实例变量@counter
。该变量是类实例的一部分。另一方面,如果你创建一个从Counter
继承的类Foo
,它将共享你定义的方法,但不会共享相同的@counter
类实例变量,而是拥有自己的变量。 - Jesper