如何在Ruby中调用另一个模块中定义的方法?

时间:2016-09-02 19:14:08

标签: ruby module

class Foo
  include Bar
  include Baz
end

module Bar
  def do_something
  end
end

module Baz
  do_something
end

Baz模块无权访问Bar。有没有办法在Bar中调用方法?

一种方法是使用Baz 扩展 Bar,但我想在Foo包含所有内容。< / p>

1 个答案:

答案 0 :(得分:2)

如果出于某种原因,您不想 Baz Bar,那么您可以创建一个对象 Bar内扩展 Baz

module Bar
  def do_something
    puts 42
  end
end

module Baz
  Object.new.extend(Bar).do_something # prints 42
end