正确的结构定义

zer*_*ing 4 elixir

如何以正确的方式定义结构,请查看以下代码片段:

defmodule SapOdataService.Worker do
  defstruct uri: "", user: nil, password: nil
Run Code Online (Sandbox Code Playgroud)

我应该将默认值定义为nil还是?

fny*_*fny 9

你有几个选择.

  1. 您可以使用nil空白值明确列出键值对

    defmodule User do
      defstruct name: "zero_coding", age: nil
    end
    
    Run Code Online (Sandbox Code Playgroud)
  2. 你可以传递一个默认为nil的原子列表:

    defmodule User do
      defstruct [:name, :age]
    end
    
    Run Code Online (Sandbox Code Playgroud)
  3. 你可以混合使用以上默认为nil的原子列表:

    defmodule User do
      defstruct [:age, name: "zero_coding"] 
    end
    
    Run Code Online (Sandbox Code Playgroud)
  4. 您还可以强制创建结构时必须指定的特定键

    defmodule User do
      @enforce_keys [:name]
      defstruct [:name, :age]
    end
    
    Run Code Online (Sandbox Code Playgroud)