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

标签 ruby module

class Foo
  include Bar
  include Baz
end

module Bar
  def do_something
  end
end

module Baz
  do_something
end

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

一种方法是使用 Bar扩展 Baz,但我想将它们全部包含在 中>Foo 相反。

最佳答案

如果出于某种原因您不想使用 Bar扩展 Baz,您可以创建一个对象> 延伸 Baz 内的 Bar:

module Bar
  def do_something
    puts 42
  end
end

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

关于ruby - 如何在Ruby中调用另一个模块中定义的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39299326/

相关文章:

python - Python中的模块和库有什么区别?

html - Bootstrap 嵌套下拉列表

ruby-on-rails - ActiveRecord 错误的表名

ruby-on-rails - ruby/rails 中的日期范围

ruby-on-rails - 我可以在 Gemfile 中指定带有 patchlevel 的 ruby​​ 版本吗?

python - 我应该在哪里导入 urllib2 来上课?

visual-studio - Visual Studio 的/实验 :module conflicting with Vulkan's core. h 导致语法错误 - 编译失败

html - 什么是 HTML 模块?

javascript - Rails ejs 未定义方法

spring - Intellij 中的模块依赖性 - 无法引用其他项目中的类