Elixir Struct定义

时间:2018-03-24 12:54:49

标签: elixir

结构是在地图之上构建的扩展。但是,我期待结构定义就像,

defmodule User do
  defstruct %{name: "John", age: 27}
end

然而,我很惊讶发现需要将字段定义为关键字列表。

defmodule User do
  defstruct [name: "John", age: 27]
end

我发现这很奇怪,这种符号是否有原因?

1 个答案:

答案 0 :(得分:2)

因为它允许您使用2种不同的符号:

defstruct [:name, :age]

如果没有默认值或:

defstruct [name: "John", age: 27]

如果有默认值。你甚至可以混合这两个:

defstruct [:name, age: 27]

如果您使用关键字列表,则可以省略[],这有时会很方便。