如何使用lambda将数组中的每个项目相乘?

时间:2015-12-12 17:17:57

标签: ruby

我想将此数组中的每个项目相乘:

arr = [7, 2]

接收:

[14, 4]

我试着这样做:

la = lambda {|item| item * 2}
arr = la.(arr)
p arr

但我收到了:

[7, 2, 7, 2]

3 个答案:

答案 0 :(得分:5)

la = ->e{e * 2}
arr.map!(&la)

但这太过分了。通常,你会这样做:

arr.map!{|e| e * 2}

答案 1 :(得分:0)

您应该使用map

执行此操作
2.2.1 :001 > [7, 2].map { |x| x*2 } 
# => [14, 4] 

您可以将其嵌入到lambda中并按如下方式调用它:

2.2.1 :002 > mult = ->(a) { a.map { |x| x*2 } }
2.2.1 :006 > mult.call [7,2]
# => [14, 4] 

答案 2 :(得分:0)

您正在将数组传递给lambda,因此它将整个数组乘以2.

您需要迭代数组中的每个项目

arr.map{ |a| la.call(a) }