我正在使用ruby,并且我想使用一个数字变量来计算被调用的类的实例数。
我尝试这个...
class A
@@count = 0
def initialize
@@count += 1
end
end
class B < A
end
class C < A
end
puts B.new.count #=> 1
puts C.new.count #=> 2
....但是显然,代码共享A,B和C类的@@ count字段。
然后我尝试一下:
class A
def self.count
@count
end
def count
self.class.count
end
end
class B < A
@count = 0
end
class C < A
@count = 0
end
puts B.new.count #=> 0
puts C.new.count #=> 0
这是可行的,但是如果我在这样的子类中添加字段增量:
class B < A
@count = 0
def initialize
@count += 1
end
end
...红宝石返回此错误:
new 1.rb:15:in initialize':nil:NilClass的未定义方法+' (NoMethodError)
有人可以解释我为什么吗?