gpt4 book ai didi

ruby - 将实例方法发送到模块

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

给定以下模块,

module Foo
def bar
:baz
end
end

def send_to_foo(method)
# ...?
end

send_to_foo(:bar) # => :baz

send_to_foo 中应该包含什么代码才能使最后一行按预期工作? (send_to_foo 显然不是我实现它的方式;它只是让我更清楚我在寻找什么。)

我希望 Foo.send(:bar) 一开始能工作,但事实并非如此。如果该方法被定义为 def self.bar,那会很有趣,但这一点都不好玩。

最佳答案

好吧,最简单的方法是

Foo.extend Foo # let Foo use the methods it contains as instance methods
def send_to_foo(method)
Foo.send(method)
end

现在

irb> send_to_foo(:bar)
#=> :baz

关于ruby - 将实例方法发送到模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660646/

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