源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Erlang中的匹配模式总结

  • 时间:2021-05-06 23:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Erlang中的匹配模式总结
[b]一、赋值时匹配[/b] [b]原子匹配 [/b]
[u]复制代码[/u] 代码如下:
atom    = atom                        % atom another = another                     % another atom    = another                     % exception error
[b]变量匹配 [/b]
[u]复制代码[/u] 代码如下:
Var = 2.                              % 2 Var = 3 - 1.                          % 2 Var = 1.                              % exception error
[b]元组匹配 [/b]
[u]复制代码[/u] 代码如下:
Attr = {name, sloger}.                % {name, sloger} {name, Name} = Attr.                  % {name, sloger} Name.                                 % sloger
[b]列表匹配 [/b]
[u]复制代码[/u] 代码如下:
Langs = [perl, python, ruby, erlang]. [Head | Tail] = Langs. Head.                                 % perl Tail.                                 % [python, ruby, erlang]
[b]参数匹配 [/b]
[u]复制代码[/u] 代码如下:
sum([]) -> 0; sum([H|T]) -> H + sum(T). sum([1, 2, 3]).                       % 6
[b]记录匹配 [/b]
[u]复制代码[/u] 代码如下:
%% 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"
[b]比特匹配 [/b]
[u]复制代码[/u] 代码如下:
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
[b]二、流程控制中的匹配[/b] [b]if [/b]
[u]复制代码[/u] 代码如下:
if     Pattern1 [when Guard1] -> Expression1;     Pattern2 [when Guard2] -> Expression2;     %% and so on ...     _                      -> Expression3           % 匹配所有其它结果 end.
[b]case[/b]
[u]复制代码[/u] 代码如下:
case Expression of     Pattern1 [when Guard1] -> Expression1;     Pattern2 [when Guard2] -> Expression2;     %% and so on ...     _                      -> Expression3 end.
[b]try catch[/b]
[u]复制代码[/u] 代码如下:
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
[b]消息传递匹配 [/b]
[u]复制代码[/u] 代码如下:
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}}
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部