gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:19 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com