了解 erlang ETS 匹配规范的行为
Posted
技术标签:
【中文标题】了解 erlang ETS 匹配规范的行为【英文标题】:Understanding the behavior of erlang ETS match specs 【发布时间】:2021-06-20 13:03:58 【问题描述】:我正在尝试在 DETS 表上构建匹配规范,但遇到了令我困惑的事情。
表项的结构如下:
'RECORD_KEY','BODY_TUPLE'
“RECORD_KEY”术语看起来像这样 shell,T1,T2,T3,T4,T5,T6
如果我符合此规范:
' _','_','$1','_','_','_','$2'
ie: dets:match(Ref, '_','_','$1','_','_','_','$2' )
我得到了表中的所有条目。 但是,现在我尝试在匹配规范中添加一些其他术语,以便可以开始添加如下守卫:
Terms = ' _','_','$1','_','_','_','$2',
Gaurds = [],
Returns = ['$1'],
Pattern = [Terms,Gaurds,Returns],
Matches = dets:match(Ref, Terms),
即使我将 '$1' 替换为 '$_',它也不会返回任何条目。
我在这里做错了什么?
【问题讨论】:
【参考方案1】:好吧,我觉得有点愚蠢,去年我实际上使用了很多 ETS 表,但我忘记了 ets:match 和 ets:select 是两个不同的函数。我应该使用 SELECT。
【讨论】:
以上是关于了解 erlang ETS 匹配规范的行为的主要内容,如果未能解决你的问题,请参考以下文章