まつもと ゆきひろです

In message "[ruby-list:35604] Re: Rational#to_int ← String#center"
    on 02/07/22, Take_tk <ggb03124 / nifty.ne.jp> writes:

|matz / ruby-lang.org (Yukihiro Matsumoto) さん曰く:
|> 4/3は「3ぶんの4」であって1ではない以上 to_int を定義しておく
|> のは変だと思います。to_intってのはその値は整数として意味があ
|> るという意味で、整数に変換するという意味ではないので。
|
|http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Object
|
|には次のように書いてあるんですけど・・。
|
|> to_int
|> 
|> オブジェクトの整数への暗黙の変換が必要なときに内部で呼ばれます。

ええ。「暗黙の変換」と書いてありますよね。で、to_intを持つべ
きクラスは整数と直接対応するクラスです。

|p "OK/NG"[0,2.5]  #=> "OK"
|
|  Float だとうまくいくのは何故なんでしょう?
| やはり、特別扱い?

特別扱いと呼ぶかどうかはともかく、すくなくともto_intは使って
いません。ですから、今話していることとは違う話です。

| * Float#to_int、Rational#to_int で処理すべきではないか? という意見。

Floatにto_intを定義してそれを使うくらいだったら、配列のイン
デックスにFloatを使えなくすることを選びます。