Ruby:将任何类型的对象从一个模块复制到另一个模块

时间:2015-10-18 23:12:40

标签: ruby

我希望能够在Ruby中做到这一点:

module A
  @var = Object.new  # could be any object
  def f
    puts @var.inspect
  end
  module_function :f
end

module B
  def make_it(val)
    # creates reference to val in this module under the same name as
    # it appears in module A
  end
  module_function :make_it
end

这样就可以使模块B像模块A一样响应:

B.make_it(# a reference to @var in module A)
B.make_it(# a reference to f in module A)

这将允许B.f像A.f一样行动而B.f将返回'检查' 在模块A中的@var或在B中的@var的'inspect',它是它的副本 在A。

我已经要求在B中提及,但也可以使用副本。

任何人都知道这是否可以做到?举一个例子会很精彩,但任何帮助都会非常感激。我没有运气就google了一下 - 也许我不知道如何用短语来搜索。

1 个答案:

答案 0 :(得分:0)

我不确定你为什么要这样做。但是,从外面看,我不确定这是个好主意。 As they say here模块是关于功能的。但它们也像图书馆,所以理想情况下你会希望它们彼此相对独立,而不是真正相互接触。从长远来看,通过减少相互依赖性和破坏代码的可能性,这也会使事情变得更好。

也许你可以合并这两个模块?或者只是在每个中提供重复的代码?