匹配没有返回期望的值

  • 本文关键字:期望 返回 erlang ets
  • 更新时间 :
  • 英文 :


我对ets:match有麻烦。在下面的代码中,我期望ets:match返回1个找到的值,但是没有返回。为什么?

1> T = ets:new(xxx, []).
16400
2> ets:insert(T, {a, b, c, d}).
true
3> ets:match(T, {'_', '_', '_', '_'}).
[[]]

您可能需要ets:match_object/2:

> ets:match_object(T, {'_', '_', '_', '_'}).
[{a,b,c,d}]

当使用ets:match/2时,模式应该包含一些原子,如'$1', '$2'等。结果将是一个列表的列表,其中每个子列表将按照魔法原子给出的顺序包含相应的元素。例如,要按倒序获取最后三个元素:

> ets:match(T, {'_', '$3', '$2', '$1'}).
[[d,c,b]]

由于在匹配中没有使用任何这样的原子,因此每次匹配返回零元素;因此该列表包含一个空列表[[]]

相关内容

  • 没有找到相关文章

最新更新