Elixir:
Интерполяция строки
Как это сделать:
name = "Josie"
age = 28
# Интерполяция переменных
greeting = "Привет, #{name}! Тебе #{age} лет."
IO.puts greeting
Пример вывода:
Привет, Josie! Тебе 28 лет.
# Интерполяция выражений
IO.puts "Через пять лет, #{name} будет #{age + 5} лет."
Пример вывода:
Через пять лет, Josie будет 33 года.
Подробнее
В начале разработчики соединяли строки с помощью +
или ,
. Это было неудобно. Затем языки программирования начали использовать интерполяцию для более чистого и читабельного подхода. Elixir, как современный язык программирования, также нативно поддерживает эту функцию.
Вот что происходит под капотом с "Привет, #{name}!"
: во время компиляции, Elixir преобразует строку в конкатенацию бинарных частей, что эффективно, поскольку бинари в Elixir неизменяемы.
Альтернативные способы работы со строками без интерполяции в Elixir могут включать использование String.concat/2
или оператора <>
, но эти методы менее удобны для сложных строк.
Синтаксис интерполяции "#{...}"
может включать любое выражение Elixir, которое оценивается и затем преобразуется в строку. Это возможно благодаря тому, что Elixir динамически типизирован и поддерживает выражения в строках на первом уровне. Но помните, что лучше использовать его для более простых выражений, чтобы сохранить читабельность.
Смотрите также
- Документация модуля
String
в Elixir: https://hexdocs.pm/elixir/String.html - Руководство по бинарному типу данных в Elixir: https://elixir-lang.org/getting-started/binaries-strings-and-char-lists.html