ruby - 如何解决 ruby​​ 中的名称冲突

标签 ruby methods disambiguation

FooBaa两个模块分别定义了一个同名方法name,我做了include Foo在特定上下文中包含 Baa

当我调用name时,如何区分是调用Fooname方法还是Baa

最佳答案

只有模块包含的顺序决定调用哪个模块。两者不能同名 - 后者将覆盖前者。

当然,你可以做任何技巧,就在我的脑海里:

module A
  def foo
    :foo_from_A
  end
end

module B
  def foo
    :foo_from_B
  end
end

class C
  def initialize(from)
    @from = from
  end

  def foo
    from.instance_method(__method__).bind(self).call
  end

  private

  attr_reader :from
end

C.new(A).foo #=> :a_from_A
C.new(B).foo #=> :a_from_B

但这对现实生活中的用例没有好处:)

关于ruby - 如何解决 ruby​​ 中的名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52485234/

相关文章:

pointers - 为什么带有指针接收器的方法在接收到值时仍然有效?

php - 无论如何要简化 foreach 循环的老鼠巢吗?

c++ - 将一组类转换为类模板并避免构造函数歧义

Ruby 在模型中包含模块的单一方法

iOS Swift 内联重写类方法

Ruby:将 CSV 列表转换为单独的对象

java - 明确消除Java中重载构造函数的歧义

c++ - std::enable_if 的模糊部分特化

ruby - 为什么 Rake 会使我的 Mac OS X 崩溃?

ruby - SSL_connect 返回=1 错误号=0 状态=错误 : certificate verify failed in ruby and Ubuntu 14. 04