Elixir 正确的结构定义
如何以正确的方式定义结构,请查看以下代码段:Elixir 正确的结构定义,elixir,Elixir,如何以正确的方式定义结构,请查看以下代码段: defmodule SapOdataService.Worker do defstruct uri: "", user: nil, password: nil 我应该将默认值定义为nil还是?您有几个选项 对于空白值,可以使用nil显式列出键值对 defmodule User do defstruct name: "zero_coding", age: nil end 您可以传递一个原子列表,该列表将全部默认为零: defmodule
defmodule SapOdataService.Worker do
defstruct uri: "", user: nil, password: nil
我应该将默认值定义为nil还是?您有几个选项
nil
显式列出键值对
defmodule User do
defstruct name: "zero_coding", age: nil
end
defmodule User do
defstruct [:name, :age]
end
defmodule User do
defstruct [:age, name: "zero_coding"]
end
defmodule User do
defstruct [:name, :age]
end
defmodule User do
defstruct [:age, name: "zero_coding"]
end
defmodule User do
@enforce_keys [:name]
defstruct [:name, :age]
end
根据您的用例,您可以定义自定义默认值,或者只将原子列表传递给
defstruct
,每个值都将有一个nil作为默认值,我想这在您的情况下可能是有意义的。什么意思取决于我的情况?嗯,有时候,对于url
值来说,保留nil作为默认值是有意义的,有时将“”设为默认值是有意义的,有时将其设为空字符串等也是有意义的。这完全取决于您和您认为它更适合您的情况。您还可以将两者结合起来,编写类似于defstruct[:user,:password,url:]
,,所以你不必一遍又一遍地重复nil
。非常感谢大家。这里输入3只适用于你先输入所有默认值(隐式nil
),然后是显式默认值的情况<代码>defstruct[名称:“零编码”,:age]给出错误。