捕捉功能

使用 & 捕获其他模块的功能。你可以将捕获的函数直接用作函数参数或匿名函数。

Enum.map(list, fn(x) -> String.capitalize(x) end)

使用 & 可以更简洁:

Enum.map(list, &String.capitalize(&1))

在不传递任何参数的情况下捕获函数需要你明确指定其 arity,例如 &String.capitalize/1

defmodule Bob do
  def say(message, f \\ &String.capitalize/1) do
    f.(message)
  end
end