我有一个etc表'table'作为{key,[val1,val2]} 我使用
从表中选择了此数据ets:select(table,[{{‘$1','$2'},[],['$$']}]).
[[key,["val1",<<"12">>]],
[key,["val2",<<"6">>]],
[key,["val3",<<"16">>]]]
我要使用此内容删除与[val1,val2]部分匹配的条目
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">>]]]
如何根据非关键部分删除此项?
答案 0 :(得分:0)
ets:select_delete
documentation说:
如果要删除对象,则匹配规范必须返回原子
true
。没有其他返回值会删除该对象。因此,不能使用与删除元素相同的匹配规范。
所以尝试一下:
ets:select_delete(table,[{{'$1','$2'},[{'==','$2',["val1",<<"12">>]}],true}]).
ets:select_delete
返回其已删除的记录数,因此希望它这次应返回1。