質問

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

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

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}
役に立ちましたか?

解決

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

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

他のヒント

last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top