From: Akinori MUSHA aka knu Date: 1999-12-11T00:59:08+09:00 Subject: [ruby-dev:8626] Re: Enumerable and rand  knuです。 At Fri, 10 Dec 1999 22:24:06 +0900, Koretsugu Daigoro 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/