2

each_pairループの反復ごとにハッシュのペアを取得できるメソッドがあります。

{ 1 => "a", 2 => "b" }.each_pair do |key, value|
   # do something with #{key} and #{value}
end

ループの反復ごとに、現在の配列要素のインデックスをどのように知ることができますか?

array.each do |element|
  # what is element index in array?
end

いくつかの増分イテレータを使用する退屈な解決策があります。ただし、そのイテレータはループの前に割り当てる必要があり、反復ごとに手動でインクリメントする必要があります。明らかに退屈です。

配列を配列で圧縮して、 |1..のようなタプルの配列を取得する方法があれば素晴らしいでしょう。["b", "d", "e"] → [(1,"b"), (2,"d"), (3,"e")] and than pattern matched each element of the pair in|`ステートメント。

だから、最後に、私が探しているのはいくつかの関数ですf、それは:

f(["a"]) do |index, element|
  # index == 1, element == "a"
end
4

2 に答える 2

5

Enumerable :: each_with_indexを使用して、配列をループし、現在のインデックスを取得できます。

于 2012-06-26T11:47:20.397 に答える
1

私が間違っている場合は訂正してください。ただし、元の配列のインデックスと値を持つサブ配列で構成される配列が必要だと思いますか?

a= ["b", "d", "e"]
a.enum_with_index.map {|ind, val| [ind, val]
=> [[0, "b"], [1, "d"], [2, "e"]]
于 2012-06-26T11:47:45.170 に答える