Ruby_Array_16

この記事は、以下のドキュメントを改変(自分なりに整理)して利用しています。

class Array (Ruby 3.0.0 リファレンスマニュアル)

インスタンスメソッド

cycle(n=nil) {|obj| block } -> nil
cycle(n=nil) -> Enumerator
  • 配列の全要素をn回繰り返しブロックを呼び出す
    • nがnilの場合は無限に繰り返す
  • ブロックを省略した場合は、以上のような繰り返しを行うEnumeratorを返す
  • nに整数以外のオブジェクトを指定した場合はto_intメソッドによる暗黙の型変換を試みる
irb(main):001:0> a = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> result = a.cycle(3) {|v| puts v }
1
2
3
1
2
3
1
2
3
=> nil

irb(main):003:0> result
=> nil

irb(main):004:0> a.cycle(0) {|v| puts v }
=> nil

irb(main):005:0> a.cycle(-1) {|v| puts v }
=> nil

irb(main):006:0> a.cycle {|v| puts v }
1
2
3
1
2
3
... # 無限

# memo
# 返り値はnil
irb(main):001:0> a = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> enum = a.cycle(3)
=> #<Enumerator: [1, 2, 3]:cycle(3)>

irb(main):003:0> enum.each {|v| puts v }
1
2
3
1
2
3
1
2
3
=> nil
irb(main):001:0> a = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> enum = a.cycle(3)
=> #<Enumerator: [1, 2, 3]:cycle(3)>

irb(main):003:0> a[1] = 'a'
=> "a"

irb(main):004:0> enum
=> #<Enumerator: [1, "a", 3]:cycle(3)>

irb(main):005:0> enum.each {|v| puts v }
1
a
3
1
a
3
1
a
3
=> nil