是否可以通过编程方式进行模式匹配?
Pattern = {error, '_'}, IsError = case {error, "foo"} of Pattern -> true; _ -> false end.
我知道我可以用宏来做这件事,但是我有一个动态的模式列表,我想匹配这些模式,而这些模式事先并不知道。
nukf8bse1#
也许最接近的方法是使用编译后的match specification,方法是调用函数ets:match_spec_compile和ets:match_spec_run:
ets:match_spec_compile
ets:match_spec_run
MS = ets:match_spec_compile([{{error, '_'}, [], ['$_']}]). Items = [ok, {error, foo}, {error, bar}]. ets:match_spec_run(Items, MS).
这会传回Items清单中符合的两个项目:
Items
[{error,foo},{error,bar}]
1条答案
按热度按时间nukf8bse1#
也许最接近的方法是使用编译后的match specification,方法是调用函数
ets:match_spec_compile
和ets:match_spec_run
:这会传回
Items
清单中符合的两个项目: