我阅读了gem rom的代码,特别是已知优秀红宝石开发人员编写的子模块rom-relation。在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
? (即,这里使用什么惯例?)答案 0 :(得分:8)
Jon已经说过{1.9}引入了Float::INFINITY
。因此,如果ROM使用此常量,则需要Ruby 1.9.2。
1.0/0
适用于每个Ruby版本。
但是,您当然可以在代码中使用Float::INFINITY
:
ROM::Infinity == Float::INFINITY
#=> true
答案 1 :(得分:2)
也许代码是在引入Float::INFINITY
之前编写的?它看起来像是在Ruby 1.9.2中引入的:1.9.1 docs,1.9.2 docs。网上快速浏览表明Ruby是在2010年8月推出的。即使您正在查看的特定文件非常新,我怀疑代码是从旧的地方复制的。
(我不能评论命名。看看背景,那里已经有了混合物。)