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