在功能头中固定操作员

时间:2017-03-20 23:03:47

标签: elixir

我正在阅读"编程Elixir 1.3" (PragPub)并遇到了一些对我没有多大意义的事情。在页42上,作者描述了在

中指出的闭包
greeter = fn name -> (fn -> "Hello #{name}" end) end

返回的功能会记住'提供的name参数的值。这是封闭的本质。然而,2页后他给出了以下例子:

defmodule Greeter do
  def for(name, greeting) do
    fn
      (^name) -> "#{greeting} #{name}"
      (_) -> "I don't know you"
    end
  end
end

我不明白为什么name标识符固定在第一个函数头中,因为它应该传递的值是“记住的”#39;作为结束的一部分。

1 个答案:

答案 0 :(得分:3)

这是为了匹配name中包含的内容的值,而不是模式匹配并重新绑定到名为name的新变量。

查看pin operator的文档,希望有助于更好地解释它。