元组 | Tuple
元组
用于处理元组的函数。
元组是有序的元素集合; 元组可以包含任何类型的元素,并且元组可以包含不同类型的元素。大括号可以用来创建元组:
iex> {}
{}
iex> {1, :two, "three"}
{1, :two, "three"}
元组在存储器中连续存储元素; 这意味着通过索引访问元组元素(可以通过Kernel.elem/2
函数完成)是一个常量操作:
iex> tuple = {1, :two, "three"}
iex> elem(tuple, 0)
1
iex> elem(tuple, 2)
"three"
获取元组大小(通过Kernel.tuple_size/1
)同样如此:
iex> tuple_size{})
0
iex> tuple_size{1, 2, 3})
3
连续存储在内存中的元组也意味着更新元组(例如替换元素Kernel.put_elem/3
)将构成整个元组的副本。
元组并不意味着被用作“集合”类型(这也是由于缺少Enumerable
元组协议的实现而提出的):它们通常意味着用作多个元素的固定大小的容器。例如,元组通常用于使函数返回“富集”值:一种常见模式是函数{:ok, value}
为成功案例和{:error, reason}
不成功案例返回。例如,这正是File.read/1
如此:{:ok, contents}
如果读取给定文件是成功的,或者{:error, reason}
以其他方式(例如,{:error, :enoent}
如果该文件不存在)则返回。
该模块提供了使用元组的功能;一些更多的功能与元组的工作中可以找到Kernel
(Kernel.tuple_size/1
,Kernel.elem/2
,Kernel.put_elem/3
,等)。
摘要
功能
append(tuple, value)
在元组末尾插入元素。
delete_at(tuple, index)
从元组中移除元素。
duplicate(data, size)
创建一个新的元组。
insert_at(tuple, index, value)
将元素插入元组中。
to_list(tuple)
将元组转换为列表
函数
append(tuple, value)
append(tuple, term) :: tuple
在元组的末尾插入一个元素。
返回一个新的元组,并在最后添加元素,并包含tuple
后面的元素value
作为最后一个元素。
由编译器内联。
例子
iex> tuple = {:foo,:bar}
iex> Tuple.append(元组,:baz)
{:foo,:bar,:baz}
delete_at(tuple, index)
delete_at(tuple, non_neg_integer) :: tuple
从元组中移除一个元素。
删除给定index
from 处的元素tuple
。提高ArgumentError
if index
是否定的或大于或等于的长度tuple
。指数是从零开始的。
由编译器内联。
例子
iex> tuple = {:foo, :bar, :baz}
iex> Tuple.delete_at(tuple, 0)
{:bar, :baz}
duplicate(data, size)
duplicate(term, non_neg_integer) :: tuple
创建一个新的元组。
创建一个size
包含data
每个位置给定的元组。
由编译器内联。
例子
iex> Tuple.duplicate(:hello, 3)
{:hello, :hello, :hello}
insert_at(tuple, index, value)
insert_at(tuple, non_neg_integer, term) :: tuple
将元素插入到元组中。
插入value
到tuple
给定的位置index
。提高一个ArgumentError
if index
是否定的或大于的长度tuple
。指数是从零开始的。
由编译器内联。
例子
iex> tuple = {:bar, :baz}
iex> Tuple.insert_at(tuple, 0, :foo)
{:foo, :bar, :baz}
iex> Tuple.insert_at(tuple, 2, :bong)
{:bar, :baz, :bong}
to_list(tuple)
to_list(tuple) :: list
将元组转换为列表。
返回包含所有元组元素的新列表。
由编译器内联。