gpt4 book ai didi

ruby - 执行包含多个模块的同名方法

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

我有两个具有相同方法名称的模块。当我在某个类中包含两个模块时,只执行最后一个模块的方法。我需要在初始化类时同时执行:

class MyClass
include FirstModule
include SecondModule

def initialize
foo # foo is contained in both modules but only the one in SecondModules is executed
end
end

可行吗?

最佳答案

正如 Yusuke Endoh 所说,在 Ruby 中一切皆有可能。在这种情况下,您必须忘记只说“foo”的便利性,并且必须非常明确地说明您实际想要做什么,如下所示:

class MyClass
include FirstModule
include SecondModule
def initialize
FirstModule.instance_method( :foo ).bind( self ).call
SecondModule.instance_method( :foo ).bind( self ).call
end
end

“FirstModule.instance_method...”这一行可以简单地用“foo”来代替,但是通过明确说明,您可以确保无论如何,您都是从您认为自己调用的那个混入中调用方法.

关于ruby - 执行包含多个模块的同名方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12800066/

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