基本上,我想這樣做:Subract值,並得到一個新的陣列減去值
[1,2,3,4,5].some_method([1,5,8,7,8])
=> [0,-3,-5,-3,-3]
什麼是Ruby來做到這一點的最好方法是什麼?
基本上,我想這樣做:Subract值,並得到一個新的陣列減去值
[1,2,3,4,5].some_method([1,5,8,7,8])
=> [0,-3,-5,-3,-3]
什麼是Ruby來做到這一點的最好方法是什麼?
[1,2,3,4,5].zip([1,5,8,7,8]).map { |a, b| a - b }
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個值即可。
[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] }
其他的答案對待壓縮的元件陣列。你說Ruby會自動將它們轉換爲這樣的arg列表? – cHao 2011-04-29 16:09:37
+1。由於這是很常見的,我實際上建議在Ruby中增加一個類似'zip_with'方法的Haskell。如果您有興趣,可以在這裏閱讀正在進行的討論:http://redmine.ruby-lang.org/issues/4539 – 2011-04-29 16:09:57
@cHao:是的。這個概念在其他一些語言中被稱爲解構綁定。 – 2011-04-29 16:11:06