【发布时间】:2018-02-05 16:41:20
【问题描述】:
我正在学习 Elixir,我想知道是否有更好的方法将函数指针传递给 Enum.map。我有这个代码:
defmodule MyModule do
defp greet(person) do
IO.puts "Hello " <> person
end
def main() do
people = ["Manuel Bartual", "El hijo de la Tomasa"]
Enum.map(people, &greet/1)
end
end
它工作正常,但我想知道是否有另一种方法可以做到这一点,而不是使用&greet/1
【问题讨论】:
-
&greet/1有什么问题(据 José 说,这显然是 Elixir 有史以来最好的功能)?换句话说,你希望它看起来像什么?例如,Enum.map(people, fn person -> IO.puts "Hello " <> person end)可以。Enum.map(people, &greet(&1))也可以。 -
其实没关系,但我只是想知道这是否是惯用的方式。我刚开始使用 Elixir。
-
视情况而定。如果私有函数
MyModule.greet/1存在的唯一目的是用作映射器,我会选择裸fn person -> ... end。 -
明白了,谢谢
标签: elixir