42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Lists
 | ||
| localeTitle: Списки
 | ||
| ---
 | ||
| ## Списки
 | ||
| 
 | ||
| В Elixir перечислены структуры данных, состоящие из значений в квадратных скобках. Значения в списке могут быть любого типа.
 | ||
| 
 | ||
| ```elixir
 | ||
| iex> [1, "string", true] 
 | ||
|  [1, "string", true] 
 | ||
| ```
 | ||
| 
 | ||
| ## неизменность
 | ||
| 
 | ||
| Структуры данных в Elixir являются неизменяемыми, поэтому любые операции, выполняемые в List, возвращают новый список, оставляя исходное неповрежденным.
 | ||
| 
 | ||
| ```elixir
 | ||
| iex> list = [1, "string", true] 
 | ||
|  [1, "string", true] 
 | ||
|  iex> list ++ [2] 
 | ||
|  [1, "string", true, 2] 
 | ||
|  iex> list 
 | ||
|  [1, "string", true] 
 | ||
| ```
 | ||
| 
 | ||
| ## Головы и хвосты
 | ||
| 
 | ||
| Головку (первый элемент) списка и хвост (оставшиеся значения) можно легко получить с помощью операторов `hd/1` и `tl/1` .
 | ||
| 
 | ||
| ```elixir
 | ||
| iex> list = [1, "string", true] 
 | ||
|  iex> hd(list) 
 | ||
|  1 
 | ||
|  iex> tl(list) 
 | ||
|  ["string", true] 
 | ||
| ```
 | ||
| 
 | ||
| #### Дополнительная информация:
 | ||
| 
 | ||
| *   [elixir-lang.org | рекурсия](https://elixir-lang.org/getting-started/basic-types.html#linked-lists)
 | ||
| *   [hexdocs | Enum](https://hexdocs.pm/elixir/List.html) |