要知道特定表达式是否与指定模式匹配,我可以在erlang中编写如下内容:
case <expression> of
<pattern> -> true;
_ -> false
end
例如:
case {1, 2, 3} of
{_, 2, _} -> true;
_ -> false
end
有没有办法以更紧凑的方式编写它?类似的东西:
is_match(<pattern>, <expression>)
答案 0 :(得分:8)
不,没有这样的结构。您可以定义一个宏来执行此操作:
-define(is_match(Pattern, Expr), case Expr of Pattern -> true; _ -> false end).
答案 1 :(得分:0)
另一个宏:o)-define (IS_MATCH(PAT,EXP), catch(PAT = EXP) == EXP end).
没有任何案例,但我不确定捕获是否更好。