Elixir新手在这里。这个问题简短而甜蜜!
我正在通过在线编程练习学习Elixir,并就最近提交的内容提供了以下建议:
一般来说,最好使用Dict.foo而不是HashDict.foo if 可能。 Dict函数适用于所有类型的字典,如果 您的代码更改后,您将无需更新。
这让我意识到我不知道你应该在Dict上使用HashDict。人们有什么特别的美德?
答案 0 :(得分:4)
HashDict的API与Dict的API匹配,因为HashDict实现了Dict.Behaviour。建议在HashDict上使用Dict的API是因为一般来说,对接口而不是实现进行编码总是一个好主意,其中Dict在这种情况下是接口,而HashDict是该接口的实现。
我也不确定Sasa关于性能的观点,这可能是一个问题,但我几乎100%确定你应该更关心你是如何使用 Dict,而不是你如何访问它。
答案 1 :(得分:3)
我能想到的唯一用例是性能优化。 Dict
函数需要在运行时解析目标模块,然后将调用转发给该模块。直接呼叫HashDict
可以克服这一步骤。
我确信在绝大多数情况下,这种差异并不重要。但是如果你有一个每微秒计数的情况,并且你经常调用Dict,你可以通过直接调用HashDict
获得一些速度。就个人而言,在做这件事之前,我会先测量一下。
如此长的故事,Dict
应该在99,9999999%的情况下为你服务: - )
答案 2 :(得分:0)
据我所知,现在你应该使用Map
。 Dict is deprecated和HashDict一样{/ 3}}