Ruby_Array_21

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

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

インスタンスメソッド

each {|item| .... } -> self
each -> Enumerator
  • 各要素に対してブロックを評価する
  • ブロックが与えられなかった場合は、自身とeachから生成したEnumeratorオブジェクトを返す
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:1* v = arr.each do |i|
irb(main):003:1*   puts i
irb(main):004:1* end
1
2
3
=> [1, 2, 3]

irb(main):005:0> v
=> [1, 2, 3]
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> brr = arr.each
=> #<Enumerator: [1, 2, 3]:each>

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

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

irb(main):005:1* brr.each do |i|
irb(main):006:1*   puts i
irb(main):007:1* end
1
a
3
=> [1, "a", 3]
each_index {|index| .... } -> self
each_index -> Enumerator
  • 各要素のインデックスに対してブロックを評価する
  • ブロックが与えられなかった場合は、自身とeach_indexから生成したEnumeratorオブジェクトを返す
irb(main):001:0> arr = %w[a b c]
=> ["a", "b", "c"]

irb(main):002:1* v = arr.each_index do |idx|
irb(main):003:1*   puts idx
irb(main):004:1* end
0
1
2
=> ["a", "b", "c"]

irb(main):005:0> v
=> ["a", "b", "c"]
irb(main):001:0> arr = %w[a b c]
=> ["a", "b", "c"]

irb(main):002:0> brr = arr.each_index
=> #<Enumerator: ["a", "b", "c"]:each_index>

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

irb(main):004:0> brr
=> #<Enumerator: ["a", "z", "c"]:each_index>

irb(main):005:1* brr.each do |idx|
irb(main):006:1*   puts idx
irb(main):007:1* end
0
1
2
=> ["a", "z", "c"]

# memo
# Enumeratorに対してはeachを利用
メモ
  • each_indexはどういうときに使うのだろうか