当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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 \\ [])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。