1
我在Ruby中使用類繼承變量跟蹤到目前爲止創建的實例的數量。爲了讓我的代碼保持乾爽,我在一個基類中實現了大部分邏輯,這些基類都是我的其他類繼承的。如何在繼承類中自動聲明類實例變量
class Entity
@instance_counter = 0
class << self
attr_accessor :instance_counter
end
def initialize
self.class.instance_counter += 1
end
end
這個工程除了一兩件事完美的罰款:
我在每個子類中定義@instance_counter
,否則我會得到一個NoMethodError
。
class Child < Entity
@instance_counter = 0
end
是否有辦法在每個孩子中自動聲明變量,以便我不必手動執行該操作?
是'singleton_class.send'這裏真正需要的? – Mhmd
這只是在問題示例中打開'singleton_class'的替代方法。我更喜歡它,例如在這種情況下,當我只在這種情況下進行一次呼叫時,但我認爲這是個人喜好的問題。 'send'是必需的,因爲'attr_writer'是一個私有方法。 –
謝謝@kardeiz!這很有效,而且太簡單了。感覺像我的紅寶石變得有點生鏽。 – jdno