Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 为什么使用HashDict而不是Dict?_Elixir - Fatal编程技术网

Elixir 为什么使用HashDict而不是Dict?

Elixir 为什么使用HashDict而不是Dict?,elixir,Elixir,长生不老药新手。这个问题将简短而甜蜜 我正在通过在线编程练习学习长生不老药,并就最近提交的内容获得以下建议: 通常,如果需要,最好使用Dict.foo而不是HashDict.foo 可能的Dict函数适用于所有类型的词典,因此 您的代码发生了更改,您需要更新的位置将减少 这让我意识到我不知道什么时候应该使用HashDict而不是Dict。一个人有什么特别的优点?我能想到的唯一用例是性能优化。Dict函数需要在运行时解析目标模块,然后将调用转发给该模块。直接调用HashDict可以克服这一步 我确

长生不老药新手。这个问题将简短而甜蜜

我正在通过在线编程练习学习长生不老药,并就最近提交的内容获得以下建议:

通常,如果需要,最好使用Dict.foo而不是HashDict.foo 可能的Dict函数适用于所有类型的词典,因此 您的代码发生了更改,您需要更新的位置将减少


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

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

我确信,在绝大多数情况下,这种差异并不重要。但是,如果您有一个每微秒计数的情况,并且您经常调用Dict,那么直接调用HashDict可能会获得一些速度。就我个人而言,我会在做这件事之前进行测量


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

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

我确信,在绝大多数情况下,这种差异并不重要。但是,如果您有一个每微秒计数的情况,并且您经常调用Dict,那么直接调用HashDict可能会获得一些速度。就我个人而言,我会在做这件事之前进行测量


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

HashDict的API与Dict的API匹配,因为HashDict实现Dict.behavior。建议使用Dict的API而不是HashDict的API,因为一般来说,针对接口而不是实现进行编码总是一个好主意,在本例中,Dict是接口,HashDict是该接口的实现


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

HashDict的API与Dict的API匹配,因为HashDict实现了Dict.behavior。建议使用Dict的API而不是HashDict的API,因为一般来说,针对接口而不是实现进行编码总是一个好主意,在本例中,Dict是接口,HashDict是该接口的实现


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

据我所知,现在您应该只使用Map。就我所见,现在你应该用地图了。这很有趣。出于某种原因,HashDict概念在早期的练习中被大力推广,所以我有点接受了。听起来我应该一直使用Dict,至少在我找到不使用Dict的真正原因之前是这样的!也许在练习中使用HashDict是为了避免新手在使用HashDict.new创建dict时可能发生的混淆,但dict用于操纵它。非常有趣。出于某种原因,HashDict概念在早期的练习中被大力推广,所以我有点接受了。听起来我应该一直使用Dict,至少在我找到不使用Dict的真正原因之前是这样的!也许在练习中使用HashDict是为了避免新手在使用HashDict.new创建dict时可能出现的混乱,但dict是用来操纵它的。回答得好!HashDict是Dict.behavior的具体实现。更可能的情况是,您正在使用的具体实现将导致性能损失,而不是函数分派中的任何模块查找。使用Dict,您可以更改正在使用的实现,而无需更改任何访问代码。回答得好!HashDict是Dict.behavior的具体实现。更可能的情况是,您正在使用的具体实现将导致性能损失,而不是函数分派中的任何模块查找。使用Dict,您可以更改正在使用的实现,而无需更改任何访问代码。