gpt4 book ai didi

elixir - 列表与元组 - 使用什么以及何时使用?

转载 作者:行者123 更新时间:2023-12-03 01:23:59 26 4
gpt4 key购买 nike

我试图掌握Elixir列表元组之间的区别。来自 Basic Types Elixir 指南部分,我了解到:

  • 列表存储为链接项
  • 更新列表的速度很快(仅在前置时)
  • 获取列表项很慢
  • 获取列表信息(大小/长度)很慢
  • 元组元素存储在一起
  • 获取元组信息很快
  • 获取元组元素速度很快
  • 修改元组的成本很高
<小时/>

好的,没问题,但是我仍然不确定何时使用什么。我看到大多数方法返回一个元组,但在其他地方都使用列表,并且许多方法接受列表作为输入,而不是元组。根据上面所述,元组不应该用于传递数据吗?因为从用户给定值的元组中读取数据会很快?

我还注意到元组是不可枚举的,这是怎么回事?在它们上使用 Enum 不会比在列表上使用它更快吗?

如果有人可以帮助我更好地理解它们,可能通过给出一些何时使用什么的例子,那就太棒了。

最佳答案

您已经对这些差异进行了很好的总结,因此在任何情况下,其中一项很重要,它应该可以帮助您决定使用哪一项。

考虑这个问题的方法是,列表是开放式数据结构,它们的大小可以在运行时变化,而元组在编译时设置恒定大小。

例如,如果您想存储用户在 iex 期间给出的所有命令在 session 中,您需要一个列表 - 该列表的长度将取决于该 session 中给出的命令的数量。将此与元组的典型用例进行对比 - 返回 {:ok, result}{:error, reason}来自方法 - 这里元素的数量是预先知道的,因此您不会为元组的性能改进付出 Not Acceptable 代价。

至于枚举 - 元组在概念上不是集合,每个元素的位置也应该表示其角色。考虑{:ok, #PID<0.336.0>}元组 - 迭代它首先会给你一个 :ok然后是 #PID<0.336.0> ,编写一个以统一方式作用于这些事物的函数会很奇怪。

关于elixir - 列表与元组 - 使用什么以及何时使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31192923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com