檢視原始碼 Tuple (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()

在元組的結尾插入元素。

傳回一個新的元組,在結尾附加元素,並包含 元組 中的元素,最後一個元素為

由編譯器內聯。

範例

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

從元組中移除元素。

元組 中刪除給定 索引 處的元素。如果 索引 為負數或大於或等於 元組 的長度,則會引發 ArgumentError。索引從 0 開始。

由編譯器內聯。

範例

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

建立新的元組。

建立一個 大小 的元組,在每個位置都包含給定的 資料

由編譯器內聯。

範例

iex> Tuple.duplicate(:hello, 3)
{:hello, :hello, :hello}
連結至這個函數

insert_at(元組, 索引, 值)

檢視原始碼
@spec insert_at(tuple(), non_neg_integer(), term()) :: tuple()

將元素插入元組中。

在給定的 索引 處將 插入 元組 中。如果 索引 為負數或大於 元組 的長度,則會引發 ArgumentError。索引從 0 開始。

由編譯器內聯。

範例

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(元組)

檢視原始碼 (自 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(元組)

檢視原始碼 (自 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]