From: Shugo Maeda Date: 2008-09-08T20:35:34+09:00 Subject: [ruby-dev:36215] Re: Numeric#scalar? 前田です。 2008/09/08 17:29 Tadashi Saito : >> すぎな感じがします。Numericの下に比較ができてかつ実数でない数 >> をライブラリとして書くことはありえるのではないか。 > > (一部の実数Numericと)「比較ができなくてかつ実数である」数値のライブラリを書いて > いる者です。 (snip) > そのような理由があって、著作ライブラリではFloatとの比較が不可能です(比較するならば > to_fを使ってからお好きにどうぞ、というスタンスです)。そのため、ライブラリに1.9対応を > 盛り込もうとしている自分にとっては、原さんの「ありえるのではないか」という危惧は今 > 現在起こっている問題です。 正確には原さんが「ありえるのではないか」と思っている問題とは違いますよね。 原さんが懸念しているのは「比較ができてかつ実数でない数」ケースであって、 「比較ができなくてかつ実数である」ケースではないので。 > ということで、上記のようなモノの実装者としては、compareble? の方がいくらか自然に > 感じます。real? の倍以上の長さがありますが、それほど頻繁に使うものではないので、 > いいのかなという気がします。 よくわからなかったのですが、斎藤さんの作られているクラスではcomparable?は falseを返すことになるのでしょうか? もし、そうだとすると、たとえばxとyがそのクラスのインスタンスだったとして、Complex(x, y) が以下のようなエラーになると思うのですが、それは意図されたことでしょうか? irb(main):001:0> Complex(x, y) ArgumentError: not a real もし上記のような挙動を意図されていなかったとすると、やはり今回検討されている機能の 名前としてはreal?の方がより適切だったりしないでしょうか。 -- Shugo Maeda