了解Erlang ETS匹配规范的行为

b1uwtaje  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(181)

我试图在DETS表上建立一个匹配规范,但我遇到了一些令我困惑的问题。
表条目的结构如下所示:

{'RECORD_KEY','BODY_TUPLE'}

"RECORD_KEY"术语如下所示{shell,T1,T2,T3,T4,T5,T6}
如果我符合规格:

{{' _','_','$1','_','_','_'},'$2'} 

ie: dets:match(Ref, {{'_','_','$1','_','_','_'},'$2'} )

我得到了表中的所有条目。但是,现在我尝试向match规范添加一些其他术语,这样我就可以开始像这样添加守卫了:

Terms = {{' _','_','$1','_','_','_'},'$2'},
  Gaurds = [],
  Returns = ['$1'],
  Pattern = [{Terms,Gaurds,Returns}],
Matches = dets:match(Ref, Terms),

即使我将'$1'替换为'$_',它也不会返回任何条目。
我哪里做错了?

h5qlskok

h5qlskok1#

好吧,我觉得有点傻,实际上我去年用了很多ETS表,我忘了ets:match和ets:select是两个不同的函数,我应该用SELECT的。

相关问题