【问题标题】:Erlang: Find intersections in a ets tableErlang:在 ets 表中查找交点
【发布时间】:2011-02-17 05:21:36
【问题描述】:

我有一个带有下一个项目的 ets:

[at, {other_place}, me],
[other_place, {place}, {other_place}]],
[at, {place}, me], 
[on, {surface}, {object}],
[small, {object}]

我有名单[[at, door, me],[on, floor, chair],[small, bannanas]]

我需要将 ets 表中的每个项目与列表中的项目进行比较,如果第一个是同一个原子,则替换圆括号中的项目。所以如果我有[at, door, me],它与[at, {other_place}, me]匹配,我必须为所有ets表中的原子门更改{other_place}。

【问题讨论】:

  • 存储在ets表中的数据是元组,其中一个索引,通常是1,被选为所有数据的键。我不太明白您希望将您的数据映射到上面。有很多数据吗?如果没有,并且您不希望在进程之间共享数据,那么您可以考虑使用 dicts 或 gb_trees 代替。有些操作对他们来说更容易。

标签: erlang ets


【解决方案1】:

我认为这可以通过 ets:foldl 来实现,方法是将要比较的列表作为 Acc 参数进行比较。

如果需要查看子列表,也可以使用lists:foldl 折叠列表。

【讨论】:

    猜你喜欢
    • 2011-12-15
    • 2010-12-19
    • 2016-06-03
    • 2012-10-14
    • 2012-08-07
    • 2015-02-17
    • 2020-08-11
    • 2016-09-10
    • 2021-01-19
    相关资源
    最近更新 更多