Основные типы данных и операторы
Изучите базовые типы данных Elixir, такие как атомы, списки, кортежи и отображения, а также научитесь использовать основные операторы.
«Основные типы данных и операторы» — бесплатный урок Elixir & Phoenix: Scalable Backend Development на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Elixir & Phoenix: Scalable Backend Development, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Elixir & Phoenix: Scalable Backend Development содержит 4 уроков всего.
Типы данных и операторы: Введение
В основе любой программы лежат типы данных (то, что вы можете хранить) и операторы (символы, которые с ними работают). Давайте познакомимся с базовыми типами Elixir.
Числа: Целые и с плавающей точкой
В Elixir есть два числовых типа: integers (целые) вроде 42 и floats (числа с плавающей точкой) вроде 3.14. Стандартная математика работает с обеими разновидностями, как показано в этом примере.
defmodule NumbersDemo do
def run() do
integer_num = 42
float_num = 3.14159
IO.puts "Integer: #{integer_num}"
IO.puts "Float: #{float_num}"
IO.puts "Sum: #{integer_num + 10.0}"
end
end
NumbersDemo.run()Булевы типы: True, False, Nil
Значения истинности — это true и false. Обратите внимание на nil, обозначающий «отсутствие значения», а также на то, что и false, и nil считаются ложными (falsy); всё остальное считается истинным (truthy).
defmodule BooleansDemo do
def run() do
is_active = true
has_error = false
no_value = nil
IO.puts "Is Active? #{is_active}"
IO.puts "Has Error? #{has_error}"
IO.puts "No Value? #{no_value}"
if no_value do
IO.puts "This won't print."
else
IO.puts "nil is falsy!"
end
end
end
BooleansDemo.run()Атомы: уникальные идентификаторы
Атом — это константа, имя которой одновременно является ее значением, например :ok. Атомы быстро сравниваются и идеально подходят в качестве статусных кодов и ключей для мап.
defmodule AtomsDemo do
def run() do
status = :ok
type = :user
IO.puts "Current status: #{status}"
IO.puts "User type: #{type}"
if status == :ok do
IO.puts "Operation successful!"
end
end
end
AtomsDemo.run()Строки: текстовые данные
В Elixir строка представляет собой UTF-8 бинарные данные в двойных кавычках, поэтому она поддерживает любые языки. Для соединения строк используйте оператор <>.
defmodule StringsDemo do
def run() do
greeting = "Hello"
name = "CoddyKit"
message = greeting <> ", " <> name <> "!"
IO.puts message
IO.puts "String length: " <> to_string(String.length(message))
end
end
StringsDemo.run()Списки: упорядоченные коллекции
Список (list) — это упорядоченная коллекция в квадратных скобках, которая может содержать элементы разных типов. Это главная рабочая лошадка функционального программирования, в которую очень быстро добавлять элементы в начало.
defmodule ListsDemo do
def run() do
my_list = [1, 2, 3, :hello, "world"]
another_list = [4, 5]
IO.puts "Original list: " <> inspect(my_list)
IO.puts "Concatenated list: " <> inspect(my_list ++ another_list)
IO.puts "Head of list: " <> inspect(hd(my_list))
IO.puts "Tail of list: " <> inspect(tl(my_list))
end
end
ListsDemo.run()Кортежи: коллекции фиксированного размера
Кортеж (tuple) — это коллекция фиксированного размера в фигурных скобках. Они повсеместно используются для группировки возвращаемых значений, например {:ok, result} или {:error, reason}.
defmodule TuplesDemo do
def run() do
person_info = {"Alice", 30, :female}
result_tuple = {:ok, "Data fetched"}
IO.puts "Person: " <> inspect(person_info)
IO.puts "Result: " <> inspect(result_tuple)
# Accessing elements (0-indexed)
IO.puts "Name: " <> elem(person_info, 0)
end
end
TuplesDemo.run()Карты: пары ключ-значение
Структура map хранит пары «ключ-значение» в %{} — обычно используются атомы в качестве ключей для повышения производительности. Используйте её всегда, когда вам нужно описать структурированные записи или конфигурацию.
defmodule MapsDemo do
def run() do
user = %{name: "Bob", age: 25, city: "New York"}
IO.puts "User: " <> inspect(user)
IO.puts "User's name: #{user.name}"
# Updating a map
updated_user = %{user | age: 26}
IO.puts "Updated age: #{updated_user.age}"
end
end
MapsDemo.run()Арифметические операторы
В Эликсире есть привычные арифметические операторы, а также div и rem для работы с целыми числами. Обратите внимание: оператор / всегда возвращает число с плавающей точкой (float).
defmodule ArithmeticDemo do
def run() do
IO.puts "5 + 3 = #{5 + 3}"
IO.puts "10 - 4 = #{10 - 4}"
IO.puts "6 * 7 = #{6 * 7}"
IO.puts "10 / 3 = #{10 / 3}" # Float division
IO.puts "10 div 3 = #{10 div 3}" # Integer division
IO.puts "10 rem 3 = #{10 rem 3}" # Remainder
end
end
ArithmeticDemo.run()Операторы сравнения
Операторы сравнения возвращают булево значение. Используйте == для проверки равенства значений, но ===, когда важен и тип — 1 === 1.0 вернет false.
defmodule ComparisonDemo do
def run() do
IO.puts "5 == 5: #{5 == 5}"
IO.puts "5 != 10: #{5 != 10}"
IO.puts "5 < 10: #{5 < 10}"
IO.puts "10 >= 10: #{10 >= 10}"
IO.puts "1 == 1.0: #{1 == 1.0}" # True (value equality)
IO.puts "1 === 1.0: #{1 === 1.0}" # False (type strictness)
end
end
ComparisonDemo.run()Проверьте свои знания
Изучите следующий фрагмент кода на Elixir:
result = 10 div 3
status = :ok
message = "Value is #{result}"
comparison = (result > 3) == true
IO.puts "#{message}, Status: #{status}, Comparison: #{comparison}"Каким будет результат выполнения этого кода?
Проверьте свои знания (Обновлено)
Посмотрите на следующий фрагмент кода на Elixir:
result = 10 div 3
status = :ok
message = "Value is #{result}"
comparison = (result > 3)
IO.puts "#{message}, Status: #{status}, Comparison: #{comparison}"Каким будет итоговый вывод этого кода?
Итоги: типы данных и операторы
Краткий итог: целые числа и числа с плавающей точкой, булевы значения и nil, атомы, строки, списки, кортежи, мапы, а также операторы для работы с ними. Это фундамент, на котором строятся ваши знания об Elixir.
Часто задаваемые вопросы
Урок «Основные типы данных и операторы» бесплатный?
Да — полный текст урока «Основные типы данных и операторы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Elixir & Phoenix: Scalable Backend Development, подпишись на CoddyKit PRO. Курс Elixir & Phoenix: Scalable Backend Development содержит 4 уроков всего.
Чему я научусь в уроке «Основные типы данных и операторы»?
Изучите базовые типы данных Elixir, такие как атомы, списки, кортежи и отображения, а также научитесь использовать основные операторы. Ты практикуешь Elixir & Phoenix: Scalable Backend Development с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Elixir & Phoenix: Scalable Backend Development?
Предыдущий опыт не требуется. Elixir & Phoenix: Scalable Backend Development на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Основные типы данных и операторы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Elixir & Phoenix: Scalable Backend Development?
Да. Каждый урок Elixir & Phoenix: Scalable Backend Development включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в язык Elixir
- Основные типы данных и операторы
- Сопоставление с образцом и управление потоком
- Строки, двоичные данные и сигилы в Elixir