W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
def/2
定義函數(shù),使用defp/2
定義私有函數(shù)。由def/2
定義的函數(shù)可以被其它模塊引用,而私有函數(shù)只能在模塊內(nèi)引用。defmodule Math do
def sum(a, b) do
do_sum(a, b)
end
defp do_sum(a, b) do
a + b
end
end
IO.puts Math.sum(1, 2) #=> 3
IO.puts Math.do_sum(1, 2) #=> ** (UndefinedFunctionError)
函數(shù)聲明也支持衛(wèi)語句和多重從句。如果一個函數(shù)有多個從句,Elicir會逐個嘗試知道有一個匹配。下面定義了一個檢查數(shù)字是否為零的函數(shù):
defmodule Math do
def zero?(0) do
true
end
def zero?(x) when is_integer(x) do
false
end
end
IO.puts Math.zero?(0) #=> true
IO.puts Math.zero?(1) #=> false
IO.puts Math.zero?([1, 2, 3]) #=> ** (FunctionClauseError)
IO.puts Math.zero?(0.0) #=> ** (FunctionClauseError)
對于不匹配任何從句的參數(shù)會拋出一個異常。
與if
結構相似,具名函數(shù)也支持do:
和do
/end
塊語法,我們已經(jīng)知道do
/end
語法只不過是關鍵字列表的簡寫形式。例如,我們可以這樣修改math.exs
文件:
defmodule Math do
def zero?(0), do: true
def zero?(x) when is_integer(x), do: false
end
它們效果是一樣的。你可以用do:
來寫一行的代碼,但對于多行代碼還是要用do
/end
。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: