36 lines
1.7 KiB
Markdown
36 lines
1.7 KiB
Markdown
|
---
|
|||
|
title: Tuples
|
|||
|
localeTitle: Кортеж
|
|||
|
---
|
|||
|
## Кортеж
|
|||
|
|
|||
|
В Elixir кортежи представляют собой структуру данных, которая может содержать любое значение или смесь типов. Кортежи определяются фигурными фигурными скобками, а их индексы начинаются с 0. Поскольку кортежи хранятся смежно в памяти, получение данных из них является очень быстрой операцией.
|
|||
|
|
|||
|
```elixir
|
|||
|
iex> tuple = {:atom, "string"}
|
|||
|
{:atom, "string"}
|
|||
|
iex> elem(tuple, 0)
|
|||
|
:atom
|
|||
|
```
|
|||
|
|
|||
|
## неизменность
|
|||
|
|
|||
|
Кортежи в Elixir неизменяемы, поэтому внесение изменений вернет совершенно новый кортеж - сохранение оригинала в памяти.
|
|||
|
|
|||
|
```elixir
|
|||
|
iex> tuple = {:atom, "string"}
|
|||
|
{:atom, "string"}
|
|||
|
iex> put_elem(tuple, 1, true)
|
|||
|
{:atom, true}
|
|||
|
iex> tuple
|
|||
|
{:atom, "string"}
|
|||
|
```
|
|||
|
|
|||
|
## Соответствие шаблону
|
|||
|
|
|||
|
Наиболее распространенное использование кортежей в Elixir - это возврат функции. Например: `{:ok, "Hello World\n"}` Это очень полезно, так как позволяет использовать Match Matching для обработки этих возвратов.
|
|||
|
|
|||
|
#### Дополнительная информация:
|
|||
|
|
|||
|
* [elixir-lang.org | рекурсия](https://elixir-lang.org/getting-started/basic-types.html#tuples)
|
|||
|
* [hexdocs | Enum](https://hexdocs.pm/elixir/Tuple.html)
|