我正在忙着学习Elixir,并了解什么是原子.在基本类型页面上,他们是这样介绍的:
:foo
Run Code Online (Sandbox Code Playgroud)
但是,当我们遇到关键字列表时,我们会看到这样的原子
list = [{:a, 1}, {:b, 2}] # list of tuples
list == [a: 1, b: 2] # evaluates as true
Run Code Online (Sandbox Code Playgroud)
已经交换了冒号的位置以显示在原子名称之后.
似乎当原子是关键时,结肠的位置会发生变化.这确实使代码更易于阅读,因为它非常富有表现力,但我找不到任何直接引用为什么会出现这种情况(这不是我正在研究Elixir的唯一网站).
有人可以确认我是正确的,假设当它们是列表中的关键时,原子将冒号放在右边吗?
对我而言,这只会使代码更漂亮,但实际上是否有一些更深刻的理解,我不知道为什么会发生这种情况?
Pat*_*ity 10
是的,它只是原子键的语法糖.它可能是因为原子被广泛用作关键字列表和地图中的键,而较短的语法使它们更容易阅读.正如您已经正确观察到的,以下的支持者是等价的:
[{:a, 1}, {:b, 2}]
[a:1, b:2]
Run Code Online (Sandbox Code Playgroud)
以下地图也是等效的:
%{:a => 1, :b => 2}
%{a: 1, b: 2}
Run Code Online (Sandbox Code Playgroud)