> Erlang中文手册 > match/2 根据匹配模式匹配表里的对象数据

ets:match/2

根据匹配模式匹配表里的对象数据

用法:

match(Tab, Pattern) -> [Match]

根据匹配模式 Pattern 匹配 ETS 表 Tab 里的对象数据。

一个匹配模式也许包含的项值有:绑定部分(Erlang 项),'_' 可以匹配任何 Erlang 项,和匹配变量:'$N'(N>=0)

函数将返回一个匹配每个对象数据的元素的列表,每个元素是一个绑定变量模式的有序列表。

Tab = ets:new(ets_tab, [named_table, bag]),
ets:insert(Tab, [{rufsen, dog, 7}, {brunte, horse, 5}, {ludde, dog, 5}]),
ets:match(Tab, '$1').
Tab = ets:new(ets_tab, [named_table, bag]),
ets:insert(Tab, [{rufsen, dog, 7}, {brunte, horse, 5}, {ludde, dog, 5}]),
ets:match(Tab, {'_', dog, '$1'}).
Tab = ets:new(ets_tab, [named_table, bag]),
ets:insert(Tab, [{rufsen, dog, 7}, {brunte, horse, 5}, {ludde, dog, 5}]),
ets:match(Tab, {'_', '$1', '$2'}).
Tab = ets:new(ets_tab, [named_table, bag]),
ets:insert(Tab, [{rufsen, dog, 7}, {brunte, horse, 5}, {ludde, dog, 5}]),
ets:match(Tab, {'_', cow, '$1'}).

如果模式里指定了键,那么匹配是很有效率的。如果没有指定键,例如如果它是一个变量或一个下划线,那么会搜索整个表。如果表很大,搜索的时间也会很长。