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