结构体

Struct 是一种自定义数据类型,用于表示一组相关字段的数据结构。优点:

  1. 命名字段:结构体中的字段都有名称,因此你可以通过字段名称来访问和操作数据。

  2. 默认值:你可以为结构体字段指定默认值,确保结构体实例的字段总是有初始值。

  3. 不可变性:结构体是不可变的,这意味着一旦创建了一个结构体实例,你不能直接修改它的字段值。相反,你需要创建一个新的结构体实例,其中的字段值被更新。

  4. 模式匹配:你可以使用模式匹配来轻松地访问和解构结构体的字段。

可以使用defstruct宏来定义和使用结构体(Structs)

例子:

defmodule Person do
  defstruct name: "", age: 0
end

# 创建结构体实例
person = %Person{name: "Alice", age: 30}

# 访问结构体字段
name = person.name
age = person.age

# 模式匹配
%Person{name: name, age: age} = person
IO.puts("Name: #{name}, Age: #{age}")

# 更新结构体

 jane = %{john | name: "Jane"}

 

%__MODULE__{name: name, token: token}

__MODULE__ 是一个特殊的占位符,会被替换为当前模块的名称。这个语法通常用于在当前模块内创建一个特定的结构体的实例

例子: 

defmodule MyModule do
  defstruct name: "", token: ""

  def create_struct(name, token) do
    %__MODULE__{name: name, token: token}
  end
end

 

posted @ 2023-09-26 12:09  How_Many  阅读(30)  评论(0)    收藏  举报