Elixir 新手在这里。这个问题将是简短而甜蜜的!
我正在通过在线编程练习来学习 Elixir,并获得了关于最近提交的以下建议:
一般来说,如果可能的话,最好使用 Dict.foo 而不是 HashDict.foo。Dict 函数适用于各种字典,因此如果您的代码发生更改,您将有更少的地方需要更新。
这让我意识到我不知道什么时候应该使用 HashDict 而不是 Dict。一个人有什么特殊的美德?
Elixir 新手在这里。这个问题将是简短而甜蜜的!
我正在通过在线编程练习来学习 Elixir,并获得了关于最近提交的以下建议:
一般来说,如果可能的话,最好使用 Dict.foo 而不是 HashDict.foo。Dict 函数适用于各种字典,因此如果您的代码发生更改,您将有更少的地方需要更新。
这让我意识到我不知道什么时候应该使用 HashDict 而不是 Dict。一个人有什么特殊的美德?
HashDict 的 API 匹配 Dict 的 API,因为 HashDict 实现了 Dict.Behaviour。建议使用 Dict 的 API 而不是 HashDict 的,因为一般来说,针对接口而不是实现进行编码总是一个好主意,在这种情况下,Dict 是接口,而 HashDict 是该接口的实现。
我也不确定 Sasa 关于性能的观点,这可能是一个问题,但我几乎 100% 确信,总的来说,你应该更关心你如何使用 Dict,而不是如何访问它。
我能想到的唯一用例是性能优化。Dict
函数需要在运行时解析目标模块,然后将调用转发到该模块。调用HashDict
直接克服了这一步。
我敢肯定,在绝大多数情况下,这种差异并不重要。但是如果你有一个每微秒都很重要的情况,并且你经常调用 Dict,你可能会通过HashDict
直接调用来获得一些速度。就个人而言,我会在这样做之前进行测量。
长话短说,Dict
应该在 99,9999999% 的情况下为您服务 :-)
据我所知,现在你应该只使用Map
. 不推荐使用 Dict和HashDict