0
別のクラスを含むクラスがあります。私は懸念を持って第二のクラスを変更する可能性を持っていたい。ここで内部クラスを気にしてオーバーライドする方法は?
コードされています
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)
この作品罰金
BaseClass::NewInnerClass.yolo # new yolo
BaseClass::NewInnerClass.new.sample # new sample
これは
BaseClass::InnerClass.yolo # still display yolo
BaseClass::InnerClass.new.sample # still display sample
を動作しませんがBaseClass::InnerClass.yolo
表示yolorewrite
とBaseClass::InnerClass.new.sample
表示samplerewrite
を作るための方法はあります
「*これはうまく動作します」と「*これは動作しません」ブロックには同じコードがあります! – Uzbekjon
今、彼らはしません! :) – Uzbekjon
ええ、私はポストの後に気づきます。申し訳ありません:D – Naremy