结构是在地图之上构建的扩展。但是,我期待结构定义就像,
defmodule User do
defstruct %{name: "John", age: 27}
end
然而,我很惊讶发现需要将字段定义为关键字列表。
defmodule User do
defstruct [name: "John", age: 27]
end
我发现这很奇怪,这种符号是否有原因?
答案 0 :(得分:2)
因为它允许您使用2种不同的符号:
defstruct [:name, :age]
如果没有默认值或:
defstruct [name: "John", age: 27]
如果有默认值。你甚至可以混合这两个:
defstruct [:name, age: 27]
如果您使用关键字列表,则可以省略[]
,这有时会很方便。