我遇到麻烦:匹配.在下面的代码中,我希望ets:match返回1找到的值,但不返回任何值.为什么?
1> T = ets:new(xxx, []).
16400
2> ets:insert(T, {a, b, c, d}).
true
3> ets:match(T, {'_', '_', '_', '_'}).
[[]]
Run Code Online (Sandbox Code Playgroud)
leg*_*cia 10
你可能想要ets:match_object/2代替:
> ets:match_object(T, {'_', '_', '_', '_'}).
[{a,b,c,d}]
Run Code Online (Sandbox Code Playgroud)
当使用ets:match/2时,模式应该包含一些原子'$1','$2'等等.结果将是一个列表列表,其中每个子列表将按照魔法原子给出的顺序包含相应的元素.例如,要以相反的顺序获取最后三个元素:
> ets:match(T, {'_', '$3', '$2', '$1'}).
[[d,c,b]]
Run Code Online (Sandbox Code Playgroud)
由于您在匹配中没有使用任何此类原子,因此每次匹配都会返回零个元素; 因此列表包含一个空列表,[[]].