dictionary - 二郎字典

标签 dictionary erlang

我想我已经知道答案了,但想确定一下。我正在构建一个字典作为静态查找表(即,字典一旦创建将是不可变的),并且发现这可以达到目的:

L = [{keyA, "A"}, {keyB, "B"}, {keyC, "C"}].
D = dict:from_list(L).
V = dict:fetch(keyA, D).

这是一种可以接受的方法还是有其他一些我还不熟悉的魔法?

作为后续,如果我要创建一个可变字典,是否真的需要娱乐诸如
D  = dict:from_list(L).
D1 = dict:append(keyD, "D", D).

最后,不是将字典从一个函数传递到另一个函数,而是有一个我可以存储和检索它的持久存储,沿着 register/2 的行- whereis/1常规?

最佳答案

是的,这是一种可以接受的方法。

如果你想修改你的字典,你总是需要从修改你的字典的所有操作中获取返回值,因为 Erlang 只有不可变数据。这是处理所有 Erlang 数据的正常方式,因此您很快就会习惯它。

另一种方法是使用 ets这是另一种存储数据的方式。根据您创建 ets 表的方式,您可能需要也可能不需要携带对它的引用。 ets 表中的数据不存储在进程堆中,因此访问它需要在进程和 ets 数据之间进行复制,但是 ets 表通常更适合存储大量数据。使用 dict/orddict/gb_trees 还是 ets 更好取决于您打算存储的数据以及您打算对其进行的操作。

关于dictionary - 二郎字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460616/

相关文章:

对列表中的项目进行分组的 Pythonic 方法

caching - 如何存储模块级一次性写入状态?

erlang - Erlang 系统中最大(实际)节点数是多少

reference - ETS创建返回值

Erlang:NIF 和透析器警告

python - 尝试解析列表中的 json 字典以创建 sqlite 数据库

python - 根据另外两个字典替换一个字典值列表

arrays - 在 Elixir 中,推荐使用什么方法来生成 "const array"的等价物?

python - HackerRank 上的 SherlockAndAnagrams 算法解释错了吗?

ios - 如何在函数外更改字典中的 Double 值?