1

Elixir 新手在这里。这个问题将是简短而甜蜜的!

我正在通过在线编程练习来学习 Elixir,并获得了关于最近提交的以下建议:

一般来说,如果可能的话,最好使用 Dict.foo 而不是 HashDict.foo。Dict 函数适用于各种字典,因此如果您的代码发生更改,您将有更少的地方需要更新。

这让我意识到我不知道什么时候应该使用 HashDict 而不是 Dict。一个人有什么特殊的美德?

4

3 回答 3

4

HashDict 的 API 匹配 Dict 的 API,因为 HashDict 实现了 Dict.Behaviour。建议使用 Dict 的 API 而不是 HashDict 的,因为一般来说,针对接口而不是实现进行编码总是一个好主意,在这种情况下,Dict 是接口,而 HashDict 是该接口的实现。

我也不确定 Sasa 关于性能的观点,这可能是一个问题,但我几乎 100% 确信,总的来说,你应该更关心你如何使用 Dict,而不是如何访问它。

于 2014-03-02T20:36:23.143 回答
3

我能想到的唯一用例是性能优化。Dict函数需要在运行时解析目标模块,然后将调用转发到该模块。调用HashDict直接克服了这一步。

我敢肯定,在绝大多数情况下,这种差异并不重要。但是如果你有一个每微秒都很重要的情况,并且你经常调用 Dict,你可能会通过HashDict直接调用来获得一些速度。就个人而言,我会在这样做之前进行测量。

长话短说,Dict应该在 99,9999999% 的情况下为您服务 :-)

于 2014-03-02T13:24:50.143 回答
0

据我所知,现在你应该只使用Map. 不推荐使用 DictHashDict

于 2016-08-31T10:16:24.380 回答