Erlang中文手册(Erldoc.com)  »  ets  »  match/2
Erlang并发编程 Erlang/OTP设计原理 Erlang/OTP[pdf] Mnesia用户手册[pdf] Erlang完整手册[en] 官网手册[en] 模块列表 方法列表 随机 Erlang中文社区(BBS) 美女图库

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'}).

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

阿里云 - 最高1000元通用代金券立即可用
沪ICP备13037221号-9