Algorithm 如何编写Elixir映射函数,使其能够在每个列表中添加项目?

Algorithm 如何编写Elixir映射函数,使其能够在每个列表中添加项目?,algorithm,mapping,elixir,Algorithm,Mapping,Elixir,如何应用一个map函数,该函数接受函数f和2列表l1和l2,并返回通过依次将该函数应用于每个列表中的一个元素而生成的列表 一些伪代码 function add(a1,a2) {return a1 + a2} map2(add, [1,2,3], [4,5,6]) 这将产生一个列表 [5,7,9] 这是我到目前为止所做的 Enum.map(list, fn n -> IO.puts n + Enum.each(list2, fn z -> z end) 我会先输入,然后应用函

如何应用一个map函数,该函数接受函数f和2列表l1和l2,并返回通过依次将该函数应用于每个列表中的一个元素而生成的列表

一些伪代码

function add(a1,a2) {return a1 + a2}

map2(add, [1,2,3], [4,5,6])
这将产生一个列表

[5,7,9]
这是我到目前为止所做的

 Enum.map(list, fn n -> IO.puts n + Enum.each(list2, fn z -> z end)
我会先输入,然后应用函数:

iex(1)> defmodule M do
...(1)>   def add({a1, a2}), do: a1 + a2
...(1)> end
iex(2)> Enum.zip([1,2,3], [4,5,6]) |> Enum.map(&M.add/1)
#⇒ [5, 7, 9]
或者,使用理解:

iex(3)>对于{i1,i2}我将首先对输入进行初始化,然后应用函数:

iex(1)> defmodule M do
...(1)>   def add({a1, a2}), do: a1 + a2
...(1)> end
iex(2)> Enum.zip([1,2,3], [4,5,6]) |> Enum.map(&M.add/1)
#⇒ [5, 7, 9]
或者,使用理解:


iex(3)>对于{i1,i2}在Erlang的
lists
模块中有一个函数,它正好做到了这一点:
lists:zipwith/3
。不过,Elixir的
Enum
模块中没有用于此的包装器

iex(1)> :lists.zipwith(fn a, b -> a + b end, [1, 2, 3], [4, 5, 6])
[5, 7, 9]
fn a,b->a+b end
可以缩短为引用
+
运算符:

iex(2)> :lists.zipwith(&Kernel.+/2, [1, 2, 3], [4, 5, 6])
[5, 7, 9]

在Erlang的
列表
模块中有一个函数,它正是这样做的:
列表:zipwith/3
。不过,Elixir的
Enum
模块中没有用于此的包装器

iex(1)> :lists.zipwith(fn a, b -> a + b end, [1, 2, 3], [4, 5, 6])
[5, 7, 9]
fn a,b->a+b end
可以缩短为引用
+
运算符:

iex(2)> :lists.zipwith(&Kernel.+/2, [1, 2, 3], [4, 5, 6])
[5, 7, 9]

通过Elixir 1.12中的更新,将有一个Enum.zip_,具有/3功能:

iex(1)> defmodule M do
...(1)>   def add({a1, a2}), do: a1 + a2
...(1)> end
iex(2)> Enum.zip([1,2,3], [4,5,6]) |> Enum.map(&M.add/1)
#⇒ [5, 7, 9]

通过Elixir 1.12中的更新,将有一个带有/3功能的Enum.zip\u:

iex(1)> defmodule M do
...(1)>   def add({a1, a2}), do: a1 + a2
...(1)> end
iex(2)> Enum.zip([1,2,3], [4,5,6]) |> Enum.map(&M.add/1)
#⇒ [5, 7, 9]

谢谢,这真的很有帮助:顺便问一下&M.add/1是什么意思?它是
fn p1->M.add(p1)end
.a=[1,2,3]的语法糖;b=[4,5,6];Enum.zip(a,b)|>Enum.map(fn{x,y}->x+y end)@shashidharmayanavar这是我答案的变体2,用不太地道的长生不老药写的。这个问题清楚地说明了:如何应用自写函数,这就是为什么我展示了变量1。谢谢,这真的很有帮助:顺便问一下&M.add/1是什么意思?它是
fn p1->M.add(p1)end
.a=[1,2,3]的语法糖;b=[4,5,6];Enum.zip(a,b)|>Enum.map(fn{x,y}->x+y end)@shashidharmayanavar这是我答案的变体2,用不太地道的长生不老药写的。问题清楚地说明了:如何应用自编功能,这就是为什么我展示了变量1。仅供参考:创建此网站不是为了帮助您解决问题,而是为了帮助尽可能多的人,为了未来的访问者,您必须将最佳答案标记为正确(我建议标记Dogbert的答案)仅供参考:创建此网站不是为了帮助您解决问题,而是为了帮助尽可能多的人,为了未来的访问者,您必须将最佳答案标记为正确(我建议标记Dogbert的答案)