gpt4 book ai didi

arrays - Erlang 数组与列表

转载 作者:行者123 更新时间:2023-12-01 19:52:39 28 4
gpt4 key购买 nike

我是 Erlang 新手,所以我正在编写一个示例程序,并努力决定是否应该使用数组或列表。两者都很容易创建和处理,但我没有得到:

  • 如何在不知道应附加项目的索引的情况下将其附加到数组中。是array:set(array:size(A),"a",A)该怎么走?
  • 如何判断某个元素是否是数组的成员,就像 lists:member()函数确实如此。我是否必须遍历整个数组并检查每个元素?

最后,哪一个在性能方面更好?

最佳答案

列表是 Erlang VM 原生的数据类型。数组被实现为嵌套元组的结构。

列表可用于模式匹配。数组不应该是这样。

正如 @zxq9 提到的,应该使用列表,除非明显不应该使用列表。我认为您应该使用数组的唯一时间是对集合执行大量随机更新时。否则就使用一个列表。

  • 正如您所提到的,可以使用 array:set(array:size(A),"a",A) 向数组追加内容。可以使用 ["a"|A] 来添加列表。当然,如果你想追加到列表中,你可以运行 lists:reverse ,然后运行 ​​["a"|A] ,然后再次调用 lists:reverse
  • 要检查数组中是否存在某项,您可以将数组转换为列表 (array:sparse_to_list(A))。然后对结果列表调用 lists:member/2

有关数组实现的更多信息,请参见此处:https://stackoverflow.com/a/16464349/1245380

关于arrays - Erlang 数组与列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28676383/

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