首页 > 解决方案 > Erlang Mnesia select on an ordered_set 是否给出了 Erlang Term 顺序的列表?

问题描述

在文档中,我不清楚我是否需​​要按照 next 或 foldl 的顺序进行迭代(提到 foldr 与ordered_set 的顺序相反,因此推测 foldl 的顺序相同)或者我是否可以使用 select 并依赖它被排序(假设 ordered_set 表)

标签: selecterlangmnesiaordered-set

解决方案


我可以使用select并依赖它被订购吗(假设 ordered_set 表)

等:选择/2

对于ordered_set 类型的表,对象的访问顺序与第一次/下一次遍历相同。这意味着匹配规范是针对具有第一个/下一个顺序的键的对象执行的,并且相应的结果列表是按照该执行的顺序

ets:first/1 :

返回表 Tab 中的第一个键 Key。对于一个 ordered_set 表,返回 Erlang 术语 order 中的第一个键

表遍历

match根据键的指定方式,使用和函数的遍历select可能不需要扫描整个表。具有完全绑定键(没有任何匹配变量)的匹配模式会将操作优化为单个键查找,而根本不需要任何表遍历。对于ordered_set,部分绑定的键将限制遍历仅根据术语顺序扫描表的子集。

ordered_set一个类型的表以随机顺序返回搜索结果对我来说毫无意义。


推荐阅读