gpt4 book ai didi

ruby - 如何引发异常而不是返回 NaN

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

我试图在我的代码中找到生成 NaN 的位置,并且我认为,为此目的,更改 Ruby 的一般行为以在出现异常时引发异常会非常有帮助否则将生成 NaN。例如,在尝试 0.0/0.0 而不是返回 NaN 时引发异常。

这似乎是不可能的,但也许有人知道该怎么做。编辑:我收回它,下面的猴子修补解决方案似乎有效。

最佳答案

你可以使用优化来猴子修补 Float#/(记住,Ruby 中的大多数运算符只是方法)

module RaiseExceptionOnNaN
refine Float do
def /(*)
super.tap {|result| raise ZeroDivisionError if result.nan?}
end
end
end

然后在你的模块/类中,使用模块

class MyClass
using RaiseExceptionOnNaN

# Have a try
0.0 / 0.0
end

关于ruby - 如何引发异常而不是返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42684788/

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