我有一个etc表'table'作为{key,[val 1,val 2]}我从表中选择了此数据,使用
ets:select(table,[{{‘$1','$2'},[],['$$']}]).
[[key,["val1",<<"12">>]],
[key,["val2",<<"6">>]],
[key,["val3",<<"16">>]]]
字符串
我想删除与部件[val 1,val 2]匹配的条目,使用此
ets:select_delete(table,[{{‘$1','$2'},[{'==','$2',["val1",<<"12">>]}],['$$']}]).
0
型
但当我再次运行select时,
ets:select(table,[{{‘$1','$2'},[],['$$']}]).
[[key,["val1",<<"12">>]],
[key,["val2",<<"6">>]],
[key,["val3",<<"16">>]]]
型
如何根据非关键部分删除此条目?
2条答案
按热度按时间vfhzx4xs1#
我也遇到了这个问题,并解决了它只是 Package 在括号中的
true
。解决方案如下:
字符串
jgwigjjp2#
ets:select_delete
文档说:如果要删除对象,match规范必须返回原子
true
。没有其他返回值可以删除对象。因此,不能使用相同的match规范来查找元素和删除它们。所以试试这个:
字符串
ets:select_delete
返回它删除的记录数,所以希望这次它应该返回1。