在Elixir中,我们何时在原子名称之前或之后使用冒号?

我正在忙着学习Elixir,并了解什么是原子.在basic types page,它们是这样介绍的:

:foo

但是,当我们遇到keyword lists时,我们会看到这样的原子

list = [{:a, 1}, {:b, 2}]   # list of tuples
list == [a: 1, b: 2]        # evaluates as true

已经交换了冒号的位置以显示在原子名称之后.

似乎当原子是关键时,结肠的位置会发生变化.这确实使代码更容易阅读,因为它非常富有表现力,但我找不到任何直接引用为什么会出现这种情况(这不是我正在研究Elixir的唯一网站).

有人可以确认我是正确的,假设当它们是列表中的关键时,原子将冒号放在右边吗?

对我而言,这只会使代码更漂亮,但实际上是否有一些更深刻的理解,我不知道为什么会发生这种情况?

最佳答案
是的,它只是原子键的语法糖.它可能是因为原子被广泛用作关键字列表和地图中的键,而较短的语法使它们更容易阅读.正如您已经正确观察到的,以下的支持者是等价的:

[{:a, 1}, {:b, 2}]
[a:1, b:2]

以下地图也是等效的:

%{:a => 1, :b => 2}
%{a: 1, b: 2}

转载注明原文:在Elixir中,我们何时在原子名称之前或之后使用冒号? - 代码日志