呼び出す度に数値が1づつ増えたり減ったりするカウンタを、Rubyで書くとしたらどうやりますか? こんな感じですか。 class Counter def initialize(init=1) @current = init end def inc @current += 1 end def dec @current -= 1 end end c = Counter.new c.inc # => 2 c.inc # => 3 c.inc # => 4 c.inc # => 5 c.dec # => 4 c.dec # => 3 c.dec # => 2 c.dec # => 1 def counter(op=:+, init=1) Enumerator.new do |y| cur = init loop { y << cur; cur = cur.send(op, 1) } end end