1

Rubyで逆の順序でトラバースしながら、特定の配列要素を(何らかの条件に基づいて)変更する方法はありますか?

より明確にするために、

問題は [1,2,3,4,5] の偶数を x に置き換えることです

出力は [1,x,3,x,5] (同じ配列) である必要がありますが、置換は右から左に行われる必要があります..5 から 1 に移動します。

前もって感謝します!

これは機能します: (arr.length -1).downto(0) { |x| arr[x] で何かをする }

4

3 に答える 3

3
p [1,2,3,4,5].reverse_each.map{|e| e.odd? ? e : e/2} #[5, 2, 3, 1, 1]
于 2012-09-03T11:43:45.480 に答える
1

出力も逆にするのではなく、逆の順序でトラバースしたいことを理解しています。多分これ:

xs = [1, 2, 3]
xs.reverse_each.with_index { |x, idx| xs[xs.size-1-idx] = x.to_s if x == 2 }
xs #=> [1, "2", 3]
于 2012-09-03T11:45:09.093 に答える