2016-06-21 1 views
0

私はRubyを使用していますが、私は配列を再学習しています。私は彼らが何であるかは知っていますが、それらを完全に利用したことはありませ私は配列、オッズを持っていて、その中のすべての数字を倍にしたいと思っていました。私は以下の解決策を思いついた。しかし、私は、私の問題に対してよりエレガントでシンプルな解決策があるかどうかを見たいと思っていました。.eachを使用して配列を最適に変更する方法

odds = [1,3,5,7,9] 

odds.each do |x| 
    odds[odds.index(x)]=x*2 
end 

最終的な結果は、あなたが、アレイ内のすべての項目を修正するためにmap!列挙子を使用することができますodds = [2,6,10,14,18]

+5

使用するプログラミング言語を指定していません。質問にタグを付けてください。 –

答えて

2

です:

odds.map!{ |x| x*2} 
1

あなたは本当に場所に変更したい、とあなたが本当にしたい場合はeachを使用して、私はあなたのアプローチがどんなに良いと思います。それは慣用的ではありませんが、あなたが述べた制約を満たしています。ここで

は、いくつかのより多くの一般的なアプローチです:

Array.map

元の配列を変更することはありませんmapを持つ配列をマッピングする(それはではありませんインプレース)がしばしばあり、良いことは、それはあなたが探しているものではないかもしれません。

odds.map { |x| x*2 } 

Array.map!あなたは具体的には約eachを尋ねなかった

odds.map! { |x| x*2 } 

Array.each_index

:あなたは本当に元の配列を変更したいならば

、あなたはインプレースをマッピングするためにmap!を使用することができますので、eachを使用して元の配列を変更する場合は、each_indexが最適です:

odds.each_index { |i| odds[i] *= 2 } 
関連する問題