例如,如果我有一个findProduct的函数参数([[1,2,3],[1,5,6]])我怎样才能找出2个子列表的乘积然后将它们添加到新结果列表[6,30]?
答案 0 :(得分:2)
productFn = fn(list) -> Enum.reduce(list, &*/2) end
my_list = [[1, 2, 3], [1, 5, 6]]
Enum.map(my_list, productFn) # => [6, 30]
如果您不熟悉&
运算符(more info here):
productFn = fn(list) -> Enum.reduce(list, &*/2) end
#is equivalent to:
productFn = fn(list) -> Enum.reduce(list, fn(item, acc) -> item * acc end) end
和
Enum.map(list, productFn)
is equivalent to:
Enum.map(list, fn(item) -> productFn.(item) end)
答案 1 :(得分:0)
您可以使用Enum.reduce/2使用累加器缩减每个列表,然后使用这两个元素返回新列表:
defmodule MyProduct do
def findProduct(list_of_lists) do
Enum.map(list_of_lists, fn(list) -> Enum.reduce(list, fn(x, acc) -> x * acc end) end)
end
end