2011-04-29 32 views

回答

10
[1,2,3,4,5].zip([1,5,8,7,8]).map { |a, b| a - b } 
+0

其他的答案對待壓縮的元件陣列。你說Ruby會自動將它們轉換爲這樣的arg列表? – cHao 2011-04-29 16:09:37

+1

+1。由於這是很常見的,我實際上建議在Ruby中增加一個類似'zip_with'方法的Haskell。如果您有興趣,可以在這裏閱讀正在進行的討論:http://redmine.ruby-lang.org/issues/4539 – 2011-04-29 16:09:57

+1

@cHao:是的。這個概念在其他一些語言中被稱爲解構綁定。 – 2011-04-29 16:11:06

2
p [1,2,3,4,5].zip([1,5,8,7,8]).map{|el| el.first-el.last} 
#=> [0, -3, -5, -3, -3] 

的.zip結合了陣列狀[[1,1],[2,5],[3,8],[4,7],[5,8]。使用.map,該塊沒有太多工作 - 只需減去2個值即可。

0
[1,2,3,4,5].zip([1,5,8,7,8]).map{|x|x[0]-x[-1]} 

或通常的陣列迭代

0.upto(a.size-1).map{|x| a[x]-b[x] }