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) |