如何通过ruby中的名称冲突来解决问题

两个模块Foo和Baa分别定义了一个具有相同名称方法,我确实包含了Foo并在特定的上下文中包含了Baa.

当我打电话给名字时,我怎么能消除是否要调用Foo或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

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...