Ruby では、クラスに一連のモジュールを含め、そのクラスを初期化するときに、これらの個々のモジュールでブロックまたはメソッドを実行する (または単にインスタンス変数を編集する方法を見つける) ようにします。モジュールでメソッドを作成し、クラスの初期化メソッドで呼び出すことでこれを実行できることはわかっていますが、モジュールを含めて1つのメソッドを呼び出して、モジュールが初期化するために追加するコードを実行するだけでこれを行う方法が必要です、そうすれば、含まれるすべてのモジュールの初期化メソッドにコード行を追加することを心配することなく、クラスに大量のものを含めることができます。エイリアシング、スーパー、および関連するものをチェックアウトしましたが、何も得られませんでした...達成したいことを理解するのに役立つ場合は、ここにいくつかの擬似コードがあります:
module Mod1
call_this_block_on_initialize { @a.push 4 }
end
module Mod2
call_this_block_on_initialize { @a.push 5 }
end
class Test
attr_accessor :a
include Mod1
include Mod2
def initialize
@a = [1, 2, 3]
call_those_blocks_set_by_mods
end
end
t = Test.new
t.a # returns [1, 2, 3, 4, 5]
これは少し冗長かもしれませんが、タイトルは私がやろうとしていることを要約していると思います. 助けてくれてありがとう!