1

Integer( param )在 Ruby 和NUM2INT( param )本机扩展中使用它作为接受任何可以在我的公共接口中转换为 Integer 的参数的方式。

最近我遇到了 Ruby 1.8 和 1.9 之间的行为差​​异,其中 1.9 会引发错误,但 1.8 会从Symbolto Fixnum(或 C 中的等价物int)产生不必要的强制:

在 1.9.3 中,我想要的行为:

1.9.3-p327 :001 > Integer( :foo )
TypeError: can't convert Symbol into Integer

在 1.8.7 中,我不想要的行为:

1.8.7 :001 > Integer( :foo )
 => 15081

这是因为我在发送符号参数而不是整数时在测试中断言了 TypeError,结果我得到了一些 Travis 失败。现在,我已经停止Symbol在我的测试中使用 s 作为错误参数的示例。但是我可以/应该为 1.8.7 兼容性做更多的事情吗?

4

0 回答 0