我想将此数组中的每个项目相乘:
arr = [7, 2]
接收:
[14, 4]
我试着这样做:
la = lambda {|item| item * 2}
arr = la.(arr)
p arr
但我收到了:
[7, 2, 7, 2]
答案 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) }