元组 | 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}如果该文件不存在)则返回。

该模块提供了使用元组的功能;一些更多的功能与元组的工作中可以找到KernelKernel.tuple_size/1Kernel.elem/2Kernel.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

从元组中移除一个元素。

删除给定indexfrom 处的元素tuple。提高ArgumentErrorif 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

将元素插入到元组中。

插入valuetuple给定的位置index。提高一个ArgumentErrorif 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

将元组转换为列表。

返回包含所有元组元素的新列表。

由编译器内联。

例子