【问题标题】:What is the closest thing in Erlang to hashes?Erlang 中最接近哈希的东西是什么?
【发布时间】:2018-02-22 21:25:10
【问题描述】:

我想要的是一种将参数传递给类似于 ruby​​ 哈希映射的函数的方法。虽然这可能不适合 Erlang,但我还不确定

在 Ruby 中,我经常使用像这样的哈希:

{"a"=>100, "b"=>200}

:Erlang 中最接近的东西是什么?

更新: 从那以后我发现了这个:

http://20bits.com/articles/erlang-an-introduction-to-records/

使用记录是一个不错的选择吗?

【问题讨论】:

  • 您应该为自己的问题创建一个特定的标签...
  • 通过阅读您对以下答案的回复,我可以肯定地说您犯了一个可怕的错误。您想在 erlang 中使用 ruby​​ 函数调用习惯用法,因为您不熟悉 erlang 习惯用法……不要那样做。学习你使用的语言。
  • 达斯汀说得好。我想我一直在做太多的Ruby。但是在某些需要添加一个额外参数的情况下,它仍然存在问题。如何做到这一点?
  • 从那以后发生了很多事情。地图被引入erlang,joearms.github.io/2014/02/01/big-changes-to-erlang.html

标签: data-structures erlang


【解决方案1】:

proplists、dicts 或 gb_trees。

【讨论】:

  • proplists 似乎有最好的相似语法。谢谢 Zed
  • proplists 在语法上可能相似,但它不是哈希。线性查找时间,但不断插入。编辑:我应该阅读这个问题,你真的想要语法。 =)
  • 拥有超过 20 个元素的列表,ETS 表格速度更快。
【解决方案2】:

Erlang R17A 将包含地图数据结构。

【讨论】:

【解决方案3】:

ETS 和 DETS 表是真正的哈希表,与 dict 不同。 DETS 用于磁盘存储,而 ETS 在内存中。它们是 Mnesia 数据库的构建块。

【讨论】:

  • 但是 ETS 或 DETS 是否可用于将参数传递给函数?
  • 当然——但我不确定你的意思。但是请注意,它们不是不可变结构,它们不会在“放置”之后返回新的修改副本。所以他们可能很危险。但是,如果您确实需要散列的速度和大尺寸,那么它们就是您要走的路。
【解决方案4】:

你在这里:dict - Key-Value Dictionary

发布脚本:我在 30 秒内用谷歌搜索了这个,所以我认为你可以避免这个提问 ;-)

编辑:为我的回答辩护:

from_list(List) -> 字典

类型:
列表 = [{键,值}]
字典 = 字典()

此函数将键/值列表 List 转换为字典。

这是来自我的链接的引用。所以你可以像使用 proplists 一样创建哈希。

【讨论】:

  • 我用谷歌搜索过,在你描述的网页中没有任何类似的语法:{"a"=>100, "b"=>200}
  • 我以为你问的是功能相似性,而不是句法相似性,因为我认为可笑的是寻找相似的语法,只是为了编写看起来与其他语言相同的代码。
  • 是的,你可能是对的。当我经常查看 erlang 函数调用时,很难确切知道每个参数的用途,而且我一直喜欢 Ruby 哈希。但是,是的,我可能问错了问题。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 2011-06-08
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
相关资源
最近更新 更多