8
在Ruby中,我希望有一个类包含一系列模块,并使这些单独的模块在初始化时执行块或方法(或只是找到某种方式来编辑实例变量)类。我知道我可以通过在模块中创建一个方法然后在类的initialize方法中调用它,但我想通过简单地包含模块并调用一个方法来执行模块添加到初始化的任何代码这样我就可以在类中包含大量的东西,而不用担心在包含每个模块的初始化方法中添加一行代码。我已经签出走样,超级,以及相关的东西,但如果它有助于了解什么,我希望能在这里完成还没有得到任何东西......是一些伪代码: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]
这可能是有点罗嗦但我认为标题总结了我想要做的事情。谢谢你的帮助!
你是对的,我研究了super的工作方式,并且我能够为任意数量的模块添加代码,无论组合或模块是什么。基本上为模块做了一个超级链: – thIIIrd
这是钱,谢谢。我用它来分离Rails CanCan授权模式的'ability.rb'文件:http://stackoverflow.com/a/25723811/293280 –