3

我阅读了 gem rom的代码,特别是它的子模块rom-relation由已知的优秀 ruby​​ 开发人员编写。在rom-relation/lib/rom-relation.rb中,我们可以阅读:

#Represent a positive, infinitely large Float number
Infinity  = 1.0 / 0

但我没有看到Float::INFINITY.

在 irb 中,我尝试过:

> 1.0/0 == Float::INFINITY
=> true
  • 为什么不使用Float::INFINITY
  • Infinity以一个常量的大写字母开头,但为什么不INFINITY呢?(即,这里使用什么约定?)
4

2 回答 2

8

Jon 已经说过这Float::INFINITY是在 Ruby 1.9.2 中引入的。因此,如果 ROM 使用此常量,则需要 Ruby 1.9.2。

1.0/0另一方面,适用于每个 Ruby 版本。

但是,您当然可以Float::INFINITY在代码中使用:

ROM::Infinity == Float::INFINITY
#=> true
于 2013-06-16T08:18:05.877 回答
2

也许代码是在Float::INFINITY介绍之前编写的?在我看来它是在 Ruby 1.9.2 中引入的:1.9.1 docs1.9.2 docs。网络上的快速搜索表明 Ruby 是在 2010 年 8 月推出的。即使您正在查看的特定文件非常新,我怀疑代码是从旧地方复制的。

(我不能对命名发表评论。看看上下文,那里已经混合了。)

于 2013-06-16T07:16:13.507 回答