跳轉到內容

Erlang 程式設計/函式

來自華夏公益教科書,開放的書籍,為開放的世界

← 表示式 | 保護 →

Erlang 函式

[編輯 | 編輯原始碼]

要檢視 Erlang 中的函式,我們可以建立名為 even_prime.erl 的檔案,其中包含以下程式碼。

-module(even_prime).                           % 1
-export([is_even_prime/1]).                    % 2
                                               % 3 
is_even_prime(2) ->                            % 4   clause 1 is simple
    true;                                      % 5
is_even_prime(N) when is_integer(N) ->         % 6   clause 2 has a guard: is_integer(N)
    false;                                     % 7
is_even_prime(Any) ->                          % 8   clause 3 is simple
    'I prefer integer inputs'.                 % 9

函式子句按檢查順序排列。首先檢查 is_even_prime(2) 是否匹配。如果引數匹配,則返回 true 。此子句以分號結尾,因為函式定義尚未完成。如果 is_even_prime(2) 未匹配,則嘗試 is_even_prime(N) is_even_prime(N) 檢查是否匹配。N 是一個匹配任何整數的變數。語句 when is_integer 是一個 保護,它只允許整數型別進入 N。分號表示還有更多要進行。末尾的句號表示函式定義已完成。 is_even_prime(Any) 匹配任何型別的任何內容,並返回值 'I prefer integer inputs'. 函式現在已完成。此函式是一個全函式,應該涵蓋所有可能的單引數輸入。

輸出

 2> c(even_prime). 
./even_prime.erl:8: Warning: variable 'Any' is unused
{ok,even_prime}
 3> even_prime:is_even_prime(2). 
true
 4> even_prime:is_even_prime(1). 
false
 5> even_prime:is_even_prime(seven). 
'I prefer integer inputs'
==================================================================
Syntax/structure of a function: 
==================================================================
semicolon     - ends a clause
period        - ends a function 
when          - starts a guard
arrow         - separates the head from the tail of the function
function head - input part of function includes the signature and guard
function tail - output/consequence(s) part of function
signature     - the function name and argument structure/count
==================================================================
rotate_list( [H|T] ) when is_atom(H) -> T ++ [H].
                                     .
[----signature-----] [----guard----] .  
                                     .                     
[-----------function head----------] .  [--function tail--]
                           
==================================================================
華夏公益教科書