您好,登錄后才能下訂單哦!
本篇內容介紹了“Erlang函數(shù)、子句、子句保護式實例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
函數(shù):
%% This is a simple Erlang module % Test ... -module(helloworld). -export([pie/0, print/1]). pie() -> 3.14 . print(Msg) -> io:format("The Message is ~p.~n",[Msg]) %~p 表示以美化的方式打印Erlang項式,~n 表示插入一個換行符, ~w 表示打印Erlang字符串
函數(shù)子句:
-module(helloworld). -export([area/1, either_or_both/2]). % “_” 表示省略模式 either_or_both(true, _) -> true; either_or_both(_, true) -> false; either_or_both(false, false) -> false; area({a, X, Y}) -> io:format("a, X, Y: ~p, ~p, ~p.~n", [a, X, Y]); area({b, X, Y}) -> io:format("b, X, Y: ~p, ~p, ~p.~n", [b, X, Y]). %編譯: c(helloworld). %調用函數(shù): 1> helloworld:area({a, 500, 500}). a, X, Y: a, 500, 500. ok 2>
注意:子句是用分好分隔且最后一個子句由句號結尾。同意函數(shù)的所有子句必須具備相同的函數(shù)名和相同的參數(shù)數(shù)量,且必須在同一處定義,不允許在同一函數(shù)的兩個子句之間再插入其他函數(shù)定義。
對于either_or_both函數(shù),如果傳遞的參數(shù)為either_or_both(true, 42),很顯然是成立的,它只會平靜地返回true,因此這就需要用到我們的保護式。
子句保護式:
-module(helloworld). -export([either_or_both/2]). either_or_both(true, B) when is_boolean(B) -> true; either_or_both(A, true) when is _boolean(A) -> false; either_or_both(false, false) -> false;
子句保護式由關鍵字when開始到->符號結束。能用在保護式中得操作時十分有限的,大部分運算符都可以使用(+、-、*、/、++等),部分內置函數(shù)也可以用,如:self()、 is_boolean(...)、is_integer(...)、is_atom(...)等,但你不能調用自定義的函數(shù)或其他模塊中得函數(shù)。
“Erlang函數(shù)、子句、子句保護式實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。