3

gem romのコード、特に有名な優れた Ruby 開発者によって書かれたそのサブモジュール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ですか? (つまり、ここではどのような規則が使用されていますか?)
4

2 に答える 2

8

Float::INFINITYJon は、それが 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。Web をざっと見てみると、Ruby は 2010 年 8 月に導入されたことがわかります。あなたが見ている特定のファイルは非常に新しいものですが、コードはどこか古いものからコピーされたのではないかと思います。

(ネーミングについてはコメントできません。文脈を見ると、すでに混合物があります。)

于 2013-06-16T07:16:13.507 に答える