在 Ruby 中,我想让一个类包含一系列模块,并让这些单独的模块在初始化该类时执行一个块或方法(或者只是找到某种方法来编辑实例变量)。我知道我可以通过在模块中创建一个方法然后在类的初始化方法中调用它来做到这一点,但是我想要通过简单地包含模块并调用一个方法来执行模块添加到初始化的任何代码来做到这一点,这样我就可以在一个类中包含大量的东西,而不必担心在初始化方法中为每个包含的单个模块添加一行代码。我已经检查了别名,超级和相关的东西,但没有得到任何东西......如果它有助于理解我希望完成的事情,这里有一些伪代码:
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]
这可能有点罗嗦,但我认为标题总结了我正在尝试做的事情。谢谢你的帮助!