基本上,我想这样做: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