Elixir 长生不老药原子及其不同形态
因此,作为Elixir lang的新手,我对变量两边的Elixir 长生不老药原子及其不同形态,elixir,Elixir,因此,作为Elixir lang的新手,我对变量两边的:(冒号)完全感到困惑 :status是一个原子,但我们也可以在映射或结构之类的东西中找到: %{ kkey: "success" } kkey是原子吗?如果是这样的话,这与声明atom的标准方式有什么不同 另一个说明这一点的示例: IO.inspect(some_variable, label: "value of some_variable") 在本例中,label:是否被视为atom
:
(冒号)完全感到困惑
:status
是一个原子,但我们也可以在映射
或结构
之类的东西中找到:
%{
kkey: "success"
}
kkey
是原子吗?如果是这样的话,这与声明atom的标准方式有什么不同
另一个说明这一点的示例:
IO.inspect(some_variable, label: "value of some_variable")
在本例中,label:
是否被视为atom
此外,在关键字列表
中,是否所有键都是原子
请澄清。谢谢 您的假设是正确的:
%{
kkey: "success"
}
相当于:
%{
:kkey => "success"
}
有关关键字列表的更多信息,请阅读。zwippie的答案是正确的。我想补充一点。您提到了IO.inspect,例如
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"])
IO.inspect(some_variable, [{:label, "value of some_variable"}])
所以Elixir中的关键字列表
[a: 1, b: "yes"]
实际上是“2元组列表”的简写:
很多时候,函数中的options
参数是这样的关键字列表,如果您了解“2元组列表”的实际情况,则可以使用变量/动态键,例如
key = :label
value = "some label"
options = [{key, value}]
IO.inspect(something, options)
这类似于Ruby,一开始肯定会让人困惑,但过了一会儿,我接受了和平詹姆斯的答案,因为它有更多的信息。不用说,zwippie的回答也是正确的,同样值得赞赏。感谢亚历山大也为你的想法。我不知道我如何@users在这里堆栈溢出!!
key = :label
value = "some label"
options = [{key, value}]
IO.inspect(something, options)