> Erlang中文手册 > match_spec_compile/1 把一个匹配规范编译为它的内部表示形式

ets:match_spec_compile/1

把一个匹配规范编译为它的内部表示形式

用法:

match_spec_compile(MatchSpec) -> CompiledMatchSpec

这个函数把一个匹配规范 MatchSpec 转换为一个可用于被 ets:match_spec_run/2 在后续调用的内部表示形式。转换后的内部形式"不透明"的一个数据,它并不能转回为其原来的外部数据格式,并且完好无损的转回(这意味着它不可以发送到另一节点的进程上,并且仍然是一个有效的已编译的匹配规范,或存储在磁盘上也是不行)。

可以使用 ets:is_compiled_ms/1 来检测一个匹配规范是否有效。

MatchSpec = ets:fun2ms(fun({M, N}) when N > 3 -> M end),
ets:match_spec_compile(MatchSpec).

如果匹配规范 MatchSpec 不能被编译(并不是一个有效的匹配规范),将会抛出一个 badarg 的错误。

MatchSpec = "not_a_valid_ match_spec",
ets:match_spec_compile(MatchSpec).