gpt4 book ai didi

ruby - 使用 ruby​​ 优化时出现 NoMethodError

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

我正在使用 ruby​​ 的改进来猴子修补一个方法到 Math 类中,如下所示:

module Radians
refine Math do
def radians(degrees)
degrees * Math::PI / 180
end
end
end

然后我尝试在类中调用我的 monkey-patched 方法,如下所示:

class Foo
using Radians
def bar
Math.radians(180)
end
end

Foo.new.bar

这会抛出一个未定义的方法 `radians' for Math:Module (NoMethodError)

我做错了什么?我的 ruby 版本是 2.5.1p57。我咨询过documentation我认为我所做的是正确的,但显然不是。

最佳答案

您正在定义实例方法,但调用的是单例方法。

您需要改进 Math 模块的单例类:

module Radians
refine Math.singleton_class do
def radians(degrees)
degrees * Math::PI / 180
end
end
end

关于ruby - 使用 ruby​​ 优化时出现 NoMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347779/

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