Erlang - 模式匹配谓词

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)

Ric*_*rdC 8

不,没有这样的结构.您可以定义一个宏来执行此操作:

-define(is_match(Pattern, Expr), case Expr of Pattern -> true; _ -> false end).
Run Code Online (Sandbox Code Playgroud)