4

for ループまたは each_with_index を使用するのは些細なことですが、Ruby 構文を使用してそれを行うためのより良い方法があるかどうか疑問に思っています。

ソース配列の派生物である新しい配列を作成する必要があります。

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}
4

2 に答える 2

8
old_array.each_cons(2).map{|x, y| y - x}

Enumerable#each_consチャンク サイズ 2 で呼び出され、ブロックなしで呼び出されると、 内の連続する要素の各ペアを反復処理する Enumerator が返されold_arrayます。次にmap、各ペアで減算を実行するために使用します。

于 2009-07-31T20:17:31.407 に答える
1
last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
于 2009-07-31T20:13:39.323 に答える