我对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]]
由于在匹配中没有使用任何这样的原子,因此每次匹配返回零元素;因此该列表包含一个空列表[[]]
。