W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
函數(shù)被包含在和之間:?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中,函數(shù)是“一等公民”,意味著它們可以像整數(shù)和字符串一樣被當(dāng)作參數(shù)傳遞給其它函數(shù)。例如,我們將變量中的函數(shù)傳遞給函數(shù),得到返回值。我們也可以調(diào)用來檢查函數(shù)的參數(shù)個(gè)數(shù)。?add
??is_function/1
??true
??is_function/2
?
注意在調(diào)用匿名函數(shù)時(shí)變量名與括號(hào)間必須要有一個(gè)點(diǎn)()。?.
?
匿名函數(shù)是閉包,因此它們可以獲取在函數(shù)定義時(shí)所包含的變量。讓我們來定義一個(gè)新的匿名函數(shù),它使用了我們之前定義的匿名函數(shù):?add
?
iex> double = fn a -> add.(a, a) end
#Function<6.71889879/1 in :erl_eval.expr/5>
iex> double.(2)
4
記住函數(shù)中賦值的變量不會(huì)影響其外部環(huán)境:
iex> x = 42
42
iex> (fn -> x = 0 end).()
0
iex> x
42
捕獲語句也可以被用于創(chuàng)建匿名函數(shù)。這種語法會(huì)在第八章討論。?&()
?
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: