ame*_*ior 5 ruby methods disambiguation
两个模块Foo和Baa分别限定具有相同名称的方法name,我也include Foo和include Baa在特定上下文。
当我调用时name,我如何才能消除是否调用或的name方法的歧义?FooBaa
只有模块包含的顺序决定哪一个将被调用。两者不能同名 - 后者将覆盖前者。
当然,你可以做任何技巧,只是从我的头脑中:
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)
但这对于现实生活中的用例来说没有什么好处:)