青山です。

On Tue, May 28, 2002 at 09:15:22PM +0900,
 nobu.nakada / nifty.ne.jp wrote:

> String#to_i, Integer#to_sなど例外はありますが、引数なしでも呼べ
> なければならないというのは原則としてあると思います。

そういえば、以前はこれらの例外さえ存在しなかったので議論が止まってしま
いましたが、これらの例外が認められた現在なら、succ が引数を持っても良
いのでは、という事で少し話しが進んだりするでしょうか?

class Numeric
  def succ(n = 1)
    self + n
  end
end
class Time
  Hour = 3600
  def succ(n = 1)
    self + n
  end
end
class ARange
  include Enumerable
  def initialize(p1, p2)
    @p1 = p1
    @p2 = p2
  end
  def each(x)
    p = @p1
    while p <= @p2
      yield(p)
      p = p.succ(x)
    end
  end
end

range = ARange.new(1.2345, 12)
range.each(1.3){|i| p i }

range = ARange.new(Time.now, Time.now + 50000)
range.each(Time::Hour){|i| p i }

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


-- 
青山 和光 Wakou Aoyama  <wakou / ruby-lang.org>