Rubyでインデックスを使ってマップ/コレクションするにはどうすればいいですか? 質問する

Rubyでインデックスを使ってマップ/コレクションするにはどうすればいいですか? 質問する

変換する最も簡単な方法は何ですか

[x1, x2, x3, ... , xN]

[[x1, 2], [x2, 3], [x3, 4], ... , [xN, N+1]]

ベストアンサー1

each_with_indexruby 1.8.7 または 1.9 を使用している場合は、 のようなイテレータ メソッドがブロックなしで呼び出されるとオブジェクトを返すという事実を利用できます。このオブジェクトを使用して、 のようなメソッドEnumeratorを呼び出すことができます。つまり、次Enumerableのようにmap実行できます。

arr.each_with_index.map { |x,i| [x, i+2] }

1.8.6 では次のことができます:

require 'enumerator'
arr.enum_for(:each_with_index).map { |x,i| [x, i+2] }

おすすめ記事