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

ame*_*ior 5 ruby methods disambiguation

两个模块FooBaa分别限定具有相同名称的方法name,我也include Fooinclude Baa在特定上下文。

当我调用时name,我如何才能消除是否调用或的name方法的歧义?FooBaa

And*_*eko 1

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

当然,你可以做任何技巧,只是从我的头脑中:

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

但这对于现实生活中的用例来说没有什么好处:)