我正在忙着学习Elixir并了解什么是原子。在basic types page上,他们会像这样介绍:
:foo
然而,当我们遇到keyword lists时,我们会看到像这样的原子
list = [{:a, 1}, {:b, 2}] # list of tuples
list == [a: 1, b: 2] # evaluates as true
冒号的放置已交换显示在原子名称之后。
似乎当原子是键时,结肠的位置会发生变化。这确实使代码更易于阅读,因为它具有很强的表现力,但我无法直接找到为什么会出现这种情况(这不是我唯一的网站)看着学习Elixir)。
有人可以确认我是否正确地假设原子在列表中的关键位置时将冒号放在右边?
另外对我来说,这只会使代码更漂亮,但实际上是否有一些更深层次的理解我错过为什么会发生这种情况?
答案 0 :(得分:9)
是的,它只是原子键的语法糖。它可能是因为原子被广泛用作关键字列表和地图中的键,而较短的语法使它们更容易阅读。正如您已经正确观察到的那样,以下的支持者是等价的:
[{:a, 1}, {:b, 2}]
[a:1, b:2]
以下地图也是等效的:
%{:a => 1, :b => 2}
%{a: 1, b: 2}