Siena. です。

▼ [ruby-list:35298] Wakou Aoyama さん

》> String#to_i, Integer#to_sなど例外はありますが、引数なしでも呼べ> なければならないというのは原則としてあると思います。
》
》そういえば、以前はこれらの例外さえ存在しなかったので議論が止まってしまいましたが、これらの例外が認められた現在なら、succ が引数を持っても良いのでは、という事で少し話しが進んだりするでしょうか?

個人的には、これは悪くないと思います。
というか、むしろ望むところです ^^=

ここでの #succ の引数 n は、1 回で進む単位量でしょうか、
それとも何回進むかでしょうか。できれば、両方を別の
パラメータとして与えられる方が汎用性があると思うのですが。
この単位量で幾つ進めた値、というのをループさせずに直接得られますし。

あ、単位量はそのオブジェクト自身が知っているという事でしょうか。
だとすると、まつもとさんの [ruby-list:35290] という意見が...

》class ARangeinclude Enumerabledef initialize(p1, p2)@p1 = p1@p2 = p2enddef each(x)p = @p1while p <= @p2yield(p)p = p.succ(x)endendend

この ARange#each では Float で new された場合に、
誤差が積もっていってしまいますよね。[ruby-list:35272] の
#advance が両方を引数にとっていたのはこれを避けるためでした。
そこまでやらないにしても、せめて p = @p1.succ( num * unit )
くらいはしても良いように思います、って、これだと + と同じ ^^;?
あと、Float 等では machine εも考慮しないといけないと思いますけれど、
これをベースにやるなら場合分けか抽象化が必要なので置いておきます。

回数として渡される整数と単位量が必ずしも演算可能とは
限らないのでそのオブジェクト自身に任せようという意図とか、
単位量のデフォルトが 1 と互換性があるか分からないので(略)とか、
実際にそういうクラスを使う場面があるかは分からないというのも
|まぁ、いろいろとやり過ぎとは思いますが ^^;
に含まれていましたが ^^;

》each の引数を扱えるように Enumerable を拡張すれば、これで to_a(n) も

これで他に悪い影響を及ぼさないようでしたら基本的に賛成です。
どこまで影響を及ぼすのかなど把握できていないので、
問題があるかが分かりません ^^;

---
Siena. <mailto:siena / cr.chiba-u.ac.jp>