cit*_*txx 1 erlang pattern-matching
要知道特定表达式是否与指定模式匹配,我可以在erlang中写入如下内容:
case <expression> of
<pattern> -> true;
_ -> false
end
Run Code Online (Sandbox Code Playgroud)
例如:
case {1, 2, 3} of
{_, 2, _} -> true;
_ -> false
end
Run Code Online (Sandbox Code Playgroud)
有没有办法以更紧凑的方式编写它?就像是:
is_match(<pattern>, <expression>)
Run Code Online (Sandbox Code Playgroud)
不,没有这样的结构.您可以定义一个宏来执行此操作:
-define(is_match(Pattern, Expr), case Expr of Pattern -> true; _ -> false end).
Run Code Online (Sandbox Code Playgroud)