非常教程

Elixir 1.5参考手册

元组 | Tuple

元组 | 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

将元组转换为列表。

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

由编译器内联。

例子

元组 | Tuple相关

Elixir 1.5

Elixir 基于 Erlang 虚拟机的函数式、面向并行,是一种较好的编程语言。它以 Erlang 为基础,支持分布式、高容错、实时应用程序的开发。

主页 https://elixir-lang.org/
源码 https://github.com/elixir-lang/elixir
版本 1.5
发布版本 1.5.2