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'}).
如果模式里指定了键,那么匹配是很有效率的。如果没有指定键,例如如果它是一个变量或一个下划线,那么会搜索整个表。如果表很大,搜索的时间也会很长。