Elixir:使用&运算符从命名函数中获取匿名函数是否有任何好处

Nik*_*kos 1 operators anonymous-function elixir

所以我正在阅读这本书,并在某些时候指出:

还有第二种形式的&function capture操作符.您可以为其指定现有函数的名称和arity(参数数量),它将返回一个调用它的匿名函数.

但我不明白为什么有人想要这样做.如果您愿意,可以将命名和未命名函数绑定到变量,从中可以获得什么好处.

den*_*lin 6

有一些简单的函数是很常见的

Enum.map(list, fn(element) -> element.id end)
Run Code Online (Sandbox Code Playgroud)

要不就

Enum.map(list, &(&1.id))
Run Code Online (Sandbox Code Playgroud)

通过一些练习,第二个比第一个更容易阅读

关于您的问题,您也可以以相同的方式调用命名函数

Enum.map(list, &Integer.to_string/1)
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用函数将函数传递给Enum fn

Enum.map(list, fn(number) -> Integer.to_string(number) end)
Run Code Online (Sandbox Code Playgroud)

此外,捕获的变体更容易阅读.