erlang - 如何删除基于非关键部分的ets条目
问题描述
我有一个 etc 表“表”作为 {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
但是当我再次运行选择时,我得到了
ets:select(table,[{{‘$1','$2'},[],['$$']}]).
[[key,["val1",<<"12">>]],
[key,["val2",<<"6">>]],
[key,["val3",<<"16">>]]]
如何根据非关键部分删除此条目?
解决方案
true
如果要删除对象,匹配规范必须返回原子。没有其他返回值会删除该对象。因此,不能使用与删除元素相同的匹配规范来查找元素。
所以试试这个:
ets:select_delete(table,[{{'$1','$2'},[{'==','$2',["val1",<<"12">>]}],true}]).
ets:select_delete
返回它删除的记录数,所以希望这次它应该返回 1。
推荐阅读
- python - 如何计算准确率?
- c++ - 如何在 Qt 中连接来自不同窗口的两个对象?
- node.js - 维护两个不同应用程序所需的服务
- xcode - 如何在 Xcode 中将库与 rpath 链接?
- python - 使用 openpyxl 加载工作簿时的进度条
- javascript - 如何制作一个 js 代码,仅当用户满足“if”条件时才允许用户查看他们的页面?
- php - 无法将任何样式表添加到 prestashop 1.7 中的模块
- javascript - 现在服务中的这段代码是什么意思?
- python - 具有字符串格式的python正则表达式模式
- javascript - 点击提交按钮后输入文本区域的文本