Spec-Zone.ru › Elixir 1.17

Исходный код Кортеж

Функции для работы с кортежами.

Обратите внимание, что следующие функции для работы с кортежами находятся в 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, %{}}

Краткое описание

Функции

append(tuple, value)

Вставляет элемент в конец кортежа.

delete_at(tuple, index)

Удаляет элемент из кортежа.

duplicate(data, size)

Создаёт новый кортеж.

insert_at(tuple, index, value)

Вставляет элемент в кортеж.

product(tuple)

Вычисляет произведение элементов кортежа.

sum(tuple)

Вычисляет сумму элементов кортежа.

to_list(tuple)

Преобразует кортеж в список.

Функции

append(tuple, value)Source

@spec append(tuple(), term()) :: tuple()

Вставляет элемент в конец кортежа.

Возвращает новый кортеж с добавленным элементом в конце, содержащий элементы tuple и value в качестве последнего элемента.

Встроено компилятором.

Примеры

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

delete_at(tuple, index)Source

@spec delete_at(tuple(), non_neg_integer()) :: tuple()

Удаляет элемент из кортежа.

Удаляет элемент по заданному index из tuple. Выбрасывает исключение ArgumentError, если index отрицательное или больше или равно длине tuple. Индекс нулевой.

Встроено компилятором.

Примеры

iex> tuple = {:foo, :bar, :baz}
iex> Tuple.delete_at(tuple, 0)
{:bar, :baz}

duplicate(data, size)Source

@spec duplicate(term(), non_neg_integer()) :: tuple()

Создаёт новый кортеж.

Создаёт кортеж из size, содержащий указанный data на каждой позиции.

Встроено компилятором.

Примеры

iex> Tuple.duplicate(:hello, 3)
{:hello, :hello, :hello}

insert_at(tuple, index, value)Source

@spec insert_at(tuple(), non_neg_integer(), term()) :: tuple()

Вставляет элемент в кортеж.

Вставляет value в tuple на заданном index. Выбрасывает исключение ArgumentError, если 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}

product(tuple)Source

@spec product(tuple()) :: number()

Вычисляет произведение элементов кортежа.

Примеры

iex> Tuple.product({255, 255})
65025
iex> Tuple.product({255, 1.0})
255.0
iex> Tuple.product({})
1

sum(tuple)Source

@spec sum(tuple()) :: number()

Вычисляет сумму элементов кортежа.

Примеры

iex> Tuple.sum({255, 255})
510
iex> Tuple.sum({255, 0.0})
255.0
iex> Tuple.sum({})
0

to_list(tuple)Source

@spec to_list(tuple()) :: list()

Преобразует кортеж в список.

Возвращает новый список со всеми элементами кортежа.

Встроено компилятором.

Примеры

iex> tuple = {:foo, :bar, :baz}
iex> Tuple.to_list(tuple)
[:foo, :bar, :baz]

Скачать версию ePub

Создано с помощью ExDoc (v0.34.1) для Elixir

© 2012-2024 The Elixir Team
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.17.2/Tuple.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API