2011-04-29 74 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] }