knuです。

At Fri, 10 Dec 1999 22:24:06 +0900,
Koretsugu Daigoro <tmmcross / hk.airnet.ne.jp> wrote:
> > ・Range#{length,size}は、eachでイテレートしたときに繰り返される
> > 回数を計算するようですね。しかし現在の実装では、両端のいずれかが
> > FloatのときにはFloatが返ってしまいます。計算結果をfloorした方が
> > いいのではないでしょうか。

 そもそも、Floatにはsuccがないのでイテレートできませんでしたね。
それはともかくとして (1.3..3.5).size => 3.2 ってナンセンスな値に
思えますね。もっとも、イテレートできないのではfloorしたところで
依然ナンセンスですが。例外を返すのも手かな。

> $ ruby -e 'p ((0.0..1.0).size)'
> 2
> 
> よりも
> 
> $ ruby -e 'p ((0.0..1.0).size)'
> 1.0
> 
> の方がいい気もします。

 それは、{length,size}を範囲の幅を表すように変更するということ
ですか?それなら、FIXNUMやBIGNUMのときの分も直さないとダメですよ。
あと、 'a'..'z' のときとか。

	$ ruby -e 'p ((0..1).size)'
	2

	$ ruby -e 'p ((0...1).size)'
	1

ですから。

 end - begin を 返す関数(width?)もほしいところですが、イテレート
できない場合の{length,size}をどうするか、というのが先ですね。

-- 
                     /
                    /__  __
                   / )  )  ) )  /  http://www.idaemons.org/knu/
Akinori MUSHA aka / (_ /  ( (__(   mailto:knu / idaemons.org

"We are but hungry..  Associated Ita-meshi Daemons!"
                                   http://www.idaemons.org/