0

我正在学习 Erlang,所以这是一个提高我对 Erlang 设计选择的理解的问题。

为什么 ETS 数据结构(字典/树)与 Erlang 内置类型(列表/元组等)的处理方式如此不同。也就是说,它们不是垃圾收集的并且它们是可变的,因此所有使用它们的函数都有副作用。必须跟踪 ETS 表以避免内存泄漏似乎特别烦人。

Erlang 没有表现得更像列表的字典数据类型(是不可变的和垃圾收集的)是否有原因?

是否假设 ETS 仅用于复制非常昂贵的大型数据库之类的结构,而对于其他任何事情,您使用 O(n) 元组列表作为键/值数据结构?

4

1 回答 1

2

ETS 更像是一个类似数据库的工具,而不是一个数据结构。如果你想要一个键值数据类型,那么你可以使用dict 模块,它的行为类似于任何其他 Erlang 术语(垃圾收集、不可变等)。标准库中还实现了其他常见的数据结构,例如集合和平衡树。大多数时候,ETS 是不必要的。

于 2013-05-01T02:14:21.717 回答