2

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

我已经超载了+, i, *, ,/所以我可以做类似的事情

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

为了处理最后三种情况,我正在系统地测试操作数的类型: is it CFixnumor Float,其他可能性被拒绝。我的第一个问题是:这样做是否正确?

接下来我也希望能够做到

2.0 + A

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

4

1 回答 1

4

我相信“红宝石运算符重载问题”的答案通过使用is_a?and解决了您的观点coerce

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

于 2012-06-19T23:50:04.387 回答