W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
name/arity
的記號來指代函數(shù)。我們的確可以使用這種記號法來獲取某個具名函數(shù)。打開iex
,運行之前定義好的math.exs
文件。$ iex math.exs
iex> Math.zero?(0)
true
iex> fun = &Math.zero?/1
&Math.zero?/1
iex> is_function(fun)
true
iex> fun.(0)
true
本地的或已導(dǎo)入的函數(shù),例如is_function/1
,可以脫離模塊被捕獲:
iex> &is_function/1
&:erlang.is_function/1
iex> (&is_function/1).(fun)
true
注意捕獲語法也可以用于創(chuàng)建函數(shù):
iex> fun = &(&1 + 1)
#Function<6.71889879/1 in :erl_eval.expr/5>
iex> fun.(1)
2
&1
代表傳遞給函數(shù)的第一個參數(shù)。&(&1 + 1)
等同于fn x -> x + 1 end
。這種語法很適用于短的函數(shù)定義。
如果你想捕獲一個模塊中的函數(shù),你可以使用&Module.function()
:
iex> fun = &List.flatten(&1, &2)
&List.flatten/2
iex> fun.([1, [[2], 3]], [4, 5])
[1, 2, 3, 4, 5]
&List.flatten(&1, &2)
等同于fn(list, tail) -> List.flatten(list, tail) end
,在這種情況下和&List.flatten/2
是一樣的。你可以在Kernel.SpecialForms
文檔中找到更多有關(guān)捕獲符號&
的信息。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: