Ruby: Enumeratorクラス
REx - Ruby Examination で解いた問題の解説を自分なりにまとめ直すシリーズです。
問題
実行したらどうなるか
(10..15).to_a.map.with_index(1) do |elem, i| puts i end
解答
正解は
1
2
3
4
5
6
です
解説
Enumerator#with_index
with_index(offset = 0) {|(*args), idx| ... } -> object
- 生成時のパラメータに従って、要素にインデックスを添えて繰り返します。
- インデックスは offset から始まります
引用: instance method Enumerator#with_index (Ruby 2.1.0)
似てる Enumerable#each_with_index
- offset 引数を受け取らない
実行して確かめる
p "------------------" p (10..15).to_a p "------------------" (10..15).to_a.map do |elem| p elem end p "------------------" (10..15).to_a.map.with_index do |elem, i| p [elem, i] end p "------------------" (10..15).to_a.map.with_index(1) do |elem, i| p [elem, i] end p "------------------" (10..15).to_a.map.each_with_index do |elem, i| p [elem, i] end
"------------------" [10, 11, 12, 13, 14, 15] "------------------" 10 11 12 13 14 15 "------------------" [10, 0] [11, 1] [12, 2] [13, 3] [14, 4] [15, 5] "------------------" [10, 1] [11, 2] [12, 3] [13, 4] [14, 5] [15, 6] "------------------" [10, 0] [11, 1] [12, 2] [13, 3] [14, 4] [15, 5]