Elixir 匿名函数
2023-12-14 16:18 更新
函数被包含在和之间:fn
end
iex> add = fn a, b -> a + b end
#Function<12.71889879/2 in :erl_eval.expr/5>
iex> is_function(add)
true
iex> is_function(add, 2)
true
iex> is_function(add, 1)
false
iex> add.(1, 2)
3
在Elixir中,函数是“一等公民”,意味着它们可以像整数和字符串一样被当作参数传递给其它函数。例如,我们将变量中的函数传递给函数,得到返回值。我们也可以调用来检查函数的参数个数。add
is_function/1
true
is_function/2
注意在调用匿名函数时变量名与括号间必须要有一个点()。.
匿名函数是闭包,因此它们可以获取在函数定义时所包含的变量。让我们来定义一个新的匿名函数,它使用了我们之前定义的匿名函数:add
iex> double = fn a -> add.(a, a) end
#Function<6.71889879/1 in :erl_eval.expr/5>
iex> double.(2)
4
记住函数中赋值的变量不会影响其外部环境:
iex> x = 42
42
iex> (fn -> x = 0 end).()
0
iex> x
42
捕获语句也可以被用于创建匿名函数。这种语法会在第八章讨论。&()
以上内容是否对您有帮助:
更多建议: