あづみです。

Yukihiro Matsumoto wrote:
> |刻み幅を指定できるくらいはできてもいいように思います。
> |それを Range (or another) が担うのか #succ が担うのかはともかく。
> 
> それはRange#stepでは?

to_a するときに、という話かと思ってましたが、どうなんでしょう。

先ほど、http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/6077
から始まるスレッドをざーっと読んでみたのですが、なかなか面白かった
です。今では若干挙動が違う部分があったりして、その辺は注意しないと
いけないですが。

それで、上記のスレッドの中に、

[ruby-dev:6184]
> Range#sizeとRange#to_a.sizeが違うのは避けたいです.

というのがあって、これにはナルホドと思いました。というわけで、今は
to_a(n) にするよりは、

[ruby-dev:6204]
> そして、さらに step を含む拡張された Range として Range3 とか
> r = Range3.new(a, b, "OO", step)

が良いなぁと思ってます。ただ、これをそのまま Range に持って
くるとますます Range#=== が浮いてしまう(というか矛盾する)のでやっ
ぱ別クラスかなぁ。Range#set_step(n) すると、Range3::new(...,n) が
返ってくるとか。


安積伸弥
adzumi / denpa.org