我在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
有没有办法在每个孩子中自动声明变量,以便我不必手动完成?
答案 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