gpt4 book ai didi

ruby - 为什么 extend 方法不是 put puts value

转载 作者:太空宇宙 更新时间:2023-11-03 16:09:47 27 4
gpt4 key购买 nike

module Lab
def self.foo
puts 'foo from lab'
end
end

module M
def foo
puts 'foo from module'
super
end
end

module Lab
extend M
end

Lab.foo

我期待着我会看到

foo from module
foo from lab

但是我得到的是

foo from lab

我想做的是从 gem 中拦截方法的值并做一些事情。我可以使用 alias_method_chain,但我尽量不使用它。

最佳答案

如果你期待

foo from module
foo from lab

然后你需要把 super 放在 Lab#foo 中,像这样:

module Lab
def self.foo
super
puts 'foo from lab'
end
end

module M
def foo
puts 'foo from module'
end
end

module Lab
extend M
end

Lab.foo

关于ruby - 为什么 extend 方法不是 put puts value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337113/

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