Ich habe eine Klasse, die eine andere Klasse enthält. Ich möchte die Möglichkeit haben, die zweite Klasse mit einem Anliegen zu wechseln. HierWie man eine innere Klasse mit einer Sorge überschreibt?
ist der Code:
class BaseClass
class InnerClass
def sample; puts 'sample'; end
def self.yolo; puts 'yolo'; end
end
end
BaseClass::InnerClass.yolo # yolo
BaseClass::InnerClass.new.sample # sample
module UglyButNeededPatch
extend ActiveSupport::Concern
included do
class NewInnerClass
def sample; puts 'new sample'; end
def self.yolo; puts 'new yolo'; end
end
class InnerClass
def sample; super(); puts 'rewrite'; end
def self.yolo; super(); puts 'rewrite'; end
end
end
end
BaseClass.__send__(:include, UglyButNeededPatch)
Diese Arbeit fein
BaseClass::NewInnerClass.yolo # new yolo
BaseClass::NewInnerClass.new.sample # new sample
Das funktioniert nicht
BaseClass::InnerClass.yolo # still display yolo
BaseClass::InnerClass.new.sample # still display sample
Gibt es eine Möglichkeit BaseClass::InnerClass.yolo
Anzeige yolorewrite
und BaseClass::InnerClass.new.sample
Anzeige zu machen samplerewrite
"* Das funktioniert gut *" und "* Das funktioniert nicht *" Blöcke haben den gleichen Code! – Uzbekjon
Jetzt nicht! :) – Uzbekjon
Ja, ich merke nach dem Post. Entschuldigung dafür: D – Naremy