> Erlang中文手册 > match_spec_run/2 使用一个匹配规范来执行匹配操作

ets:match_spec_run/2

使用一个匹配规范来执行匹配操作

用法:

match_spec_run(List, CompiledMatchSpec) -> list()

这个函数是用一个已编译的匹配规范对一个元组形式的列表进行指定匹配,参数 CompiledMatchSpec 是函数 ets:match_spec_compile/1 调用产生的匹配规范,因此是该函数想用的匹配规范的内部表示形式。

该匹配操作会对列表里的每一个元素进行匹配操作,并返回一个包含所有结果的列表。如果列表里的一个元素并不符合匹配,将不会返回任何数据。因此返回的结果列表的长度有可能会小于参数列表的长度。

MatchSpec = ets:fun2ms(fun({M, N}) when N > 3 -> M end),
CompiledMatchSpec = ets:match_spec_compile(MatchSpec),
List = [{1, 2}, {3, 4}, {5, 6}],
ets:match_spec_run(List, CompiledMatchSpec).