2009-07-31 33 views
4

瑣碎使用for循環或each_with_index,只是想知道是否有使用Ruby語法做這件事的一個更好的方法。計算衍生物([I] - [I - 1])中的Ruby

我需要創建一個新的數組,它是源陣列的衍生物,例如:

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

嘿,不公平的挑選贏家之前我連型礦用起來:-P – Avdi 2009-07-31 20:20:29

回答

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

Enumerable#each_cons調用爲2的塊大小,但沒有一個塊返回一個枚舉器將遍歷old_array中的每對連續元素。然後,我們只需使用map對每對執行減法。

+0

我只是跑它的[1,2,3,4],我得到[1,1,1]。 – Avdi 2009-07-31 20:24:40

1
last=0 
new = old.map{|v|x=v-last;last=v;x}[1..-1] 
相關問題