一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Erlang - Erlang中的匹配模式總結

Erlang中的匹配模式總結

2020-05-24 11:30腳本之家 Erlang

這篇文章主要介紹了Erlang中的匹配模式總結,本文講解了賦值時匹配、流程控制中的匹配、消息傳遞匹配等內容,需要的朋友可以參考下

一、賦值時匹配

原子匹配

復制代碼 代碼如下:

atom    = atom                        % atom
another = another                     % another
atom    = another                     % exception error


變量匹配

復制代碼 代碼如下:

Var = 2.                              % 2
Var = 3 - 1.                          % 2
Var = 1.                              % exception error


元組匹配

復制代碼 代碼如下:

Attr = {name, sloger}.                % {name, sloger}
{name, Name} = Attr.                  % {name, sloger}
Name.                                 % sloger


列表匹配

復制代碼 代碼如下:

Langs = [perl, python, ruby, erlang].
[Head | Tail] = Langs.
Head.                                 % perl
Tail.                                 % [python, ruby, erlang]


參數匹配

復制代碼 代碼如下:


sum([]) -> 0;
sum([H|T]) -> H + sum(T).

 

sum([1, 2, 3]).                       % 6


記錄匹配

復制代碼 代碼如下:


%% record(post, {title, slug, body, author}).

 

Post = #post{title = "Pattern Match in Erlang",
             slug = "pattern-match-in-erlang",
             body = "Bla bla bla...",
             author = sloger}.

#post{title = Title, slug = Slug} = Post.

Title.                                % "Erlang 中的模式匹配總結"
Slug.                                 % "summary-of-pattern-match-in-erlang"


比特匹配

復制代碼 代碼如下:


Red = 5.
Green = 23.
Blue = 200.

 

Color = <<Red:5, Green:6, Blue:5>>.

<<R1:5, G1:6, B1:5>> = Color.

R1.                                   % 5
G1.                                   % 23
B1.                                   % 200


二、流程控制中的匹配

 

if

復制代碼 代碼如下:

 

 

if
    Pattern1 [when Guard1] -> Expression1;
    Pattern2 [when Guard2] -> Expression2;
    %% and so on ...
    _                      -> Expression3           % 匹配所有其它結果
end.

 


case

 

 

復制代碼 代碼如下:

 

case Expression of
    Pattern1 [when Guard1] -> Expression1;
    Pattern2 [when Guard2] -> Expression2;
    %% and so on ...
    _                      -> Expression3
end.

 


try catch

 

 

復制代碼 代碼如下:

 

try FunctionOrExpressions of
    Pattern1 [when Guard1] -> Expression1;
    Pattern2 [when Guard2] -> Expression2
    %% and so on ...
catch
    ExType:ExPattern1 [when ExGuard1] ->
        ExExpression1;
    ExType:ExPattern2 [when ExGuard2] ->
        ExExpression2;
    %% and so on ...
    _:_ -> DefaultExExpression               % _:_ 匹配所有異常
after
    AfterExpressions
end

 

消息傳遞匹配

復制代碼 代碼如下:

loop() ->
    receive
        {From, {rectangle, Width, Height}} ->
            From ! {self(), Width * Height},
            loop();
        {From, {circle, R}} ->
            From ! {self(), 3.14 * R * R},
            loop();
        {From, _Other} ->
            From ! {self(), {error, unknown_shape}}
            loop()
    end.
Pid = spawn(fun loop/0).
Pid ! {self(), {rectangle, 10, 5}}.         % {Pid, 50}
Pid ! {self(), {circle, 4}}.                % {Pid, 50.24}
Pid ! {self(), {square, 10}}.               % {Pid, {error, unknown_shape}}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 特黄特a级特别特级特毛片 特黄a级三级三级野战 | 青春学堂在线观看 | aⅴ免费视频| 娇女的呻吟亲女禁忌h16 | 深夜在线小视频 | 国产一级精品高清一级毛片 | 精品国产一区二区 | 国色天香社区在线视频播放 | 亚洲精品免费在线观看 | 亚洲国产情侣一区二区三区 | 亚洲欧美日韩中文高清一 | 97综合久久| 激情小说色图 | 97精品国产自在现线免费观看 | 闺蜜调教我做她的脚奴 | 黑人同学征服教师麻麻 | les女同h高h喷水 | 国产亚洲一区二区三区 | 无码国产成人777爽死 | 欧美一级高清片免费一级 | 九九精品国产亚洲A片无码 九九99热久久999精品 | freesex性欧美炮机喷潮 | 国产精品主播在线 | caoporn超碰| 性色香蕉AV久久久天天网 | 四虎精品成人免费观看 | 九九九九九九伊人 | 国产在线精品成人一区二区三区 | 我们日本在线观看免费动漫下载 | 91国内在线国内在线播放 | 国产一卡2卡3卡四卡高清 | 倩女还魂在线观看完整版免费 | 欧美做受 | 欧美久在线观看在线观看 | 欧美成人免费观看国产 | 乌克兰呦12~14| 99ri国产在线观看 | 国产精品人人视频 | 久久精品一区二区免费看 | 国产精品aaa | aaaaa特级毛片|