LoginSignup
4
1

More than 5 years have passed since last update.

Ruby で連番を作る

Last updated at Posted at 2017-02-10

方法

sequence = Enumerator.new(1..Float::INFINITY) # (1..Float::INFINITY).each でも可
sequence.next #=> 1
sequence.next #=> 2
sequence.next #=> 3

連番をインクリメントせずに sequence から現在の値を取得したい場合は Enumerator#next の代わりに Enumerator#peek を使えばよいです。

:new: さらにシンプルで素晴らしい方法

@yancya さんにコメントで教えて頂きました!感謝 :pray::sparkles:

sequence = 1.step
sequence.next #=> 1
sequence.next #=> 2
sequence.next #=> 3

Numeric#step をブロック無しで呼んだ場合は Enumerator オブジェクトを返します。その結果、上で紹介した方法と同じ挙動になります。

ついでに

Enumerator については過去に

Enumerable を include する代わりに Enumerator オブジェクトを活用する

という記事も書きましたので、ご興味があればこちらも合わせてどうぞ。

4
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1