如何自动在继承的类中声明类实例变量

时间:2016-03-09 16:34:05

标签: ruby inheritance class-instance-variables

我在Ruby中使用类继承变量来跟踪我到目前为止创建的实例数。为了保持我的代码DRY,我实现了基类中的大多数逻辑,这些逻辑是我所有其他类继承的。

if(isSwitchEnable() || password=="12345"){

                    launchActivity(PasswordActivity.class);

        }else {

                    launchActivity(MainActivty.class);

        }

除了一件事之外,这完全没问题:

我必须在每个子课程中定义class Entity @instance_counter = 0 class << self attr_accessor :instance_counter end def initialize self.class.instance_counter += 1 end end ,否则我将获得@instance_counter

NoMethodError

有没有办法在每个孩子中自动声明变量,以便我不必手动完成?

1 个答案:

答案 0 :(得分:2)

我不知道这是不是最好的方法,但我可以这样做:

class Entity
  singleton_class.send(:attr_writer, :instance_counter)
  def self.instance_counter; @instance_counter ||= 0; end
  def initialize
    self.class.instance_counter += 1
  end
end