檢視原始碼 Tuple (Elixir v1.16.2)
用於處理元組的函數。
請注意,元組的下列函數可在 Kernel
中找到
elem/2
- 依索引存取元組put_elem/3
- 依索引將值插入元組tuple_size/1
- 取得元組中元素的數量
元組旨在作為多個元素的固定大小容器。若要處理元素集合,請改用清單。 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, %{}}
摘要
函數
在元組的結尾插入元素。
傳回一個新的元組,在結尾附加元素,並包含 元組
中的元素,最後一個元素為 值
。
由編譯器內聯。
範例
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}
@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}
計算元組元素的乘積。
範例
iex> Tuple.product({255, 255})
65025
iex> Tuple.product({255, 1.0})
255.0
iex> Tuple.product({})
1
計算元組元素的總和。
範例
iex> Tuple.sum({255, 255})
510
iex> Tuple.sum({255, 0.0})
255.0
iex> Tuple.sum({})
0
將元組轉換為清單。
傳回一個包含所有元組元素的新清單。
由編譯器內聯。
範例
iex> tuple = {:foo, :bar, :baz}
iex> Tuple.to_list(tuple)
[:foo, :bar, :baz]