查看源代码 元组 (Elixir v1.16.2)

用于处理元组的函数。

请注意,以下用于元组的函数位于 Kernel

元组旨在用作多个元素的固定大小容器。要操作元素集合,请使用列表。 Enum 函数不适用于元组。

元组用花括号表示

iex> {}
{}
iex> {1, :two, "three"}
{1, :two, "three"}

元组可以包含不同类型的元素,这些元素在内存中连续存储。访问任何元素都可以在恒定时间内完成,但修改元组(这会产生一个浅拷贝)需要线性时间。元组适合读取数据,而列表更适合遍历。

元组通常用于函数具有多个返回值或用于错误处理的情况。 File.read/1 在成功读取给定文件时返回 {:ok, contents},否则返回 {:error, reason},例如当文件不存在时。

此模块中用于向元组添加和删除元素的函数在实践中很少使用,因为它们通常意味着元组被用作集合。要追加到元组,最好使用模式匹配从旧元组中提取元素,然后创建一个新元组

tuple = {:ok, :example}

# Avoid
result = Tuple.insert_at(tuple, 2, %{})

# Prefer
{:ok, atom} = tuple
result = {:ok, atom, %{}}

摘要

函数

在元组末尾插入一个元素。

从元组中删除一个元素。

创建一个新的元组。

将元素插入元组中。

计算元组元素的乘积。

计算元组元素的总和。

将元组转换为列表。

函数

@spec append(tuple(), term()) :: tuple()

在元组末尾插入一个元素。

返回一个新的元组,其中在末尾追加了元素,并且包含 tuple 中的元素,最后是 value 作为最后一个元素。

由编译器内联。

示例

iex> tuple = {:foo, :bar}
iex> Tuple.append(tuple, :baz)
{:foo, :bar, :baz}
链接到此函数

delete_at(tuple, index)

查看源代码
@spec delete_at(tuple(), non_neg_integer()) :: tuple()

从元组中删除一个元素。

tuple 中删除给定 index 处的元素。如果 index 为负数或大于或等于 tuple 的长度,则引发 ArgumentError。索引从零开始。

由编译器内联。

示例

iex> tuple = {:foo, :bar, :baz}
iex> Tuple.delete_at(tuple, 0)
{:bar, :baz}
@spec duplicate(term(), non_neg_integer()) :: tuple()

创建一个新的元组。

创建一个包含 size 个元素的元组,每个位置都包含给定的 data

由编译器内联。

示例

iex> Tuple.duplicate(:hello, 3)
{:hello, :hello, :hello}
链接到此函数

insert_at(tuple, index, value)

查看源代码
@spec insert_at(tuple(), non_neg_integer(), term()) :: tuple()

将元素插入元组中。

value 插入到给定 index 处的 tuple 中。如果 index 为负数或大于 tuple 的长度,则引发 ArgumentError。索引从零开始。

由编译器内联。

示例

iex> tuple = {:bar, :baz}
iex> Tuple.insert_at(tuple, 0, :foo)
{:foo, :bar, :baz}
iex> Tuple.insert_at(tuple, 2, :bong)
{:bar, :baz, :bong}
链接到此函数

product(tuple)

查看源代码 (自 1.12.0 起)
@spec product(tuple()) :: number()

计算元组元素的乘积。

示例

iex> Tuple.product({255, 255})
65025
iex> Tuple.product({255, 1.0})
255.0
iex> Tuple.product({})
1
链接到此函数

sum(tuple)

查看源代码 (自 1.12.0 起)
@spec sum(tuple()) :: number()

计算元组元素的总和。

示例

iex> Tuple.sum({255, 255})
510
iex> Tuple.sum({255, 0.0})
255.0
iex> Tuple.sum({})
0
@spec to_list(tuple()) :: list()

将元组转换为列表。

返回一个新的列表,其中包含所有元组元素。

由编译器内联。

示例

iex> tuple = {:foo, :bar, :baz}
iex> Tuple.to_list(tuple)
[:foo, :bar, :baz]