From: GOTO Kentaro Date: 2005-11-30T01:56:57+09:00 Subject: [ruby-dev:27876] Re: Numeric と Complex 05/11/30 に 石塚圭樹 さんは書きました: > Complex#<=>を削除というかundefしちゃうというのもあると思いますが? > > そうすれば, Complex要素の時にはエラーが返る. これが一番わかりやすいと思います。 どっちかというと Complex を組み込みにして、Python のように リテラルも用意して、さらに抽象クラス Real を用意して、 Numeric > Complex Complex > Real Comparable > Real Real > Integer Real > Float とする手もあるかと。 coerce の性質からして Numeric のサブクラスは代数を表すものではなくて、 集合を現すものだと解釈するのが自然なのでこの構成のほうが (ducktyping を使わない)場合わけなどは楽なはずです。 が、Rubyの利用の実情には即していないでしょうね。 Quaternion や Octonion のような HyperComplex の立場も おかしくなってしまうし。 結局、undef <=> が一番よいと思います。そもそも現行の Complex#<=> を使う人がいるとは思えません。 一方で、Range は反復のためのものだと思ってしまえば、 Numeric 以外は each を使うというのは(僕は)理解できます。 ごとけん