gpt4 book ai didi

Ruby 运算符重载

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

我有一个特定的类 C,我想重载一些数学运算符。

我已经重载了 +i*/,这样我就可以做类似的事情

a = C.new
b = C.new
a + b
a + 2
a + 2.0

针对后三种情况,我正在系统地测试操作数的类型:是CFixnum 还是Float,其他可能性被拒绝。我的第一个问题是:这样做是否正确?

接下来我也想做

2.0 + A

我应该怎么做?我应该提供某种转换吗?这两个问题可以用同一个方法解决吗?

最佳答案

我相信“ruby operator overloading question”的答案通过使用 is_a?coerce 解决了您的两点。

关于你的第一点。 Ruby 中的常规方法是尽可能使用 respond_to?,而不是检查类型。如果出于某种原因您特别需要检查类型,那么使用 is_a? 是正确的方法。

关于Ruby 运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111034/

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