小编mka*_*aja的帖子

Ruby:通过模块添加东西以初始化方法

在Ruby中,我希望有一个类包含一系列模块,并让这些单独的模块在初始化该类时执行一个块或方法(或者只是找到一些编辑实例变量的方法).我知道我可以通过在模块中创建一个方法,然后在类的initialize方法中调用它来实现这一点,但我希望通过简单地包含模块并调用一个方法来执行模块添加到初始化的任何代码来实现这一点.这样我就可以在类中包含大量的东西,而不必担心在包含的每个模块的initialize方法中添加一行代码.我已经检查了别名,超级和相关的东西,但没有得到任何东西......如果它有助于理解我希望在这里完成的一些伪代码:

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]
Run Code Online (Sandbox Code Playgroud)

这可能有点罗嗦,但我认为标题总结了我正在尝试做的事情.谢谢你的帮助!

ruby module initialization

9
推荐指数
1
解决办法
5469
查看次数

标签 统计

initialization ×1

module ×1

ruby ×1