像类实例变量一样使用Ruby类变量

时间:2018-08-27 15:49:44

标签: ruby class instance-variables

我正在使用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)

有人可以解释我为什么吗?

0 个答案:

没有答案