所以,作为 Elixir lang 的新手,我对变量两边的
:
(冒号)感到非常困惑!
:status
是一个原子,但我们也可以在 maps
或 structs
中找到这样的东西:
%{
kkey: "success"
}
kkey
是原子吗?如果是这样,这与 :kkey
有何不同,这是声明原子的标准方式!
另一个说明重点的例子:
IO.inspect(some_variable, label: "value of some_variable")
在这个例子中,
label:
被认为是atom
吗?
此外,在
Keyword List
中是所有键atoms
?
感谢澄清。谢谢!
zwippie 的回答是正确的。我想补充一点。你提到了
IO.inspect
,例如
IO.inspect(some_variable, label: "value of some_variable")
你假设
label:
是一个原子是正确的,但在这种情况下它是一个 Keyword
列表作为第二个参数。下面几行都是等价的:
IO.inspect(some_variable, label: "value of some_variable")
IO.inspect(some_variable, [label: "value of some_variable"])
IO.inspect(some_variable, [{:label, "value of some_variable"}])
所以 Elixir 中的
Keyword
列表看起来像
[a: 1, b: "yes"]
实际上是“二元组列表”的简写:
[{:a, 1}, {:b, "yes"}]
很多时候函数中的
options
参数是这样的关键字列表,如果你知道“二元组列表”的现实,那么你可以使用变量/动态键,例如
key = :label
value = "some label"
options = [{key, value}]
IO.inspect(something, options)