當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir Kernel.struct用法及代碼示例


Elixir語言中 Kernel.struct 相關用法介紹如下。

用法:

struct(struct, fields \\ [])
@spec struct(module() | struct(), Enum.t()) :: struct()

創建和更新結構。

struct 參數可以是一個原子(定義 defstruct )或 struct 本身。第二個參數是在枚舉期間發出雙元素元組(鍵值對)的任何 Enumerable

Enumerable 中不存在於結構中的鍵會被自動丟棄。請注意,鍵必須是原子,因為在定義結構時隻允許使用原子。如果 Enumerable 中的鍵重複,則將采用最後一個條目(與 Map.new/1 的行為相同)。

此函數對於動態創建和更新結構以及將映射轉換為結構很有用;在後一種情況下,僅在Map中插入適當的:__struct__ 字段可能是不夠的,應該使用 struct/2

例子

defmodule User do
  defstruct name: "john"
end

struct(User)
#=> %User{name: "john"}

opts = [name: "meg"]
user = struct(User, opts)
#=> %User{name: "meg"}

struct(user, unknown: "value")
#=> %User{name: "meg"}

struct(User, %{name: "meg"})
#=> %User{name: "meg"}

# String keys are ignored
struct(User, %{"name" => "meg"})
#=> %User{name: "john"}

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Kernel.struct(struct, fields \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。