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


Elixir Record用法及代码示例


Elixir语言中 Record 相关用法介绍如下。

用于处理、定义和导入记录的模块。

记录只是第一个元素是原子的元组:

iex> Record.is_record({User, "john", 27})
true

该模块为在编译时处理记录提供了便利,其中编译时字段名称用于操作元组,在元组的紧凑结构之上提供快速操作。

在 Elixir 中,记录主要用于两种情况:

  1. 处理简短的内部数据
  2. 与 Erlang 记录交互

defrecord/3 defrecordp/3 可用于创建记录,而 extract/2 extract_all/1 可用于从 Erlang 文件中提取记录。

类型

可以使用 record/2 宏(仅在 typespecs 中可用)为元组定义类型。该宏将扩展为一个元组,如下例所示:

defmodule MyModule do
  require Record
  Record.defrecord(:user, name: "john", age: 25)

  @type user :: record(:user, name: String.t(), age: integer)
  # expands to: "@type user :: {:user, String.t(), integer}"
end

反射

可以通过读取@__records__ 模块属性来检索模块中所有记录的列表(如果有)。它返回带有记录种类、名称、标签和字段的映射列表。该属性仅在模块定义中可用。

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Record。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。