0Pricing
Scala for Backend Engineering & Functional Programming · Урок

Интерполяторы s, f и raw

Встраивайте значения в строки.

«Интерполяторы s, f и raw» — бесплатный урок Scala for Backend Engineering & Functional Programming на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Scala for Backend Engineering & Functional Programming, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Scala for Backend Engineering & Functional Programming содержит 4 уроков всего.

Что такое интерполяция?

Интерполяция строк позволяет напрямую вставлять значения в строковый литерал.

Вместо объединения частей с помощью + перед кавычками ставят префиксную букву, а внутри указывают переменные. В Scala есть три встроенных интерполятора: s, f и raw.

val name = "Ada"
println(s"Hello, $name!")

Интерполятор s

Интерполятор s используется чаще всего. Поместите s перед открывающей кавычкой, а затем используйте $variable, чтобы вставить значение.

Такой код читается понятнее, чем конкатенация с помощью +.

val count = 3
println(s"You have $count messages")

Выражения в фигурных скобках

Если требуется вставить не просто переменную, заключите выражение в ${ }.

Это позволяет выполнять арифметические операции или вызывать методы прямо внутри строки.

val a = 4
val b = 5
println(s"Sum is ${a + b}")
println(s"Upper: ${"hi".toUpperCase}")

Рабочий пример с s

Вот полноценная программа, использующая интерполятор s для построения приветствия.

Обратите внимание, как аккуратно переменные вставляются в предложение.

object Main extends App {
  val user = "Sam"
  val items = 2
  println(s"Hi $user, you bought $items items.")
}

Экранирование знака доллара

Внутри интерполированной строки $ имеет специальное значение. Чтобы вывести буквальный знак доллара, напишите $$.

Это удобно при форматировании цен или денежных сумм.

val price = 9
println(s"Total: $$$price")

Интерполятор f

Интерполятор f добавляет форматирование в стиле printf. После переменной укажите спецификатор формата, например %d для целых чисел или %s для строк.

Он отлично подходит для управления точностью и выравниванием чисел.

val n = 42
println(f"Value: $n%d")
val label = "Pi"
println(f"$label%s")

Форматирование дробных чисел

Используйте %f с указанием точности, чтобы задать количество знаков после запятой. Например, %.2f показывает две цифры после точки.

Это идеально подходит для денежных сумм или измерений.

val pi = 3.14159
println(f"Pi is $pi%.2f")
val ratio = 0.5
println(f"Ratio: $ratio%.1f")

Ширина и заполнение с помощью f

Интерполятор f также может дополнить числа до заданной ширины. %5d выравнивает целое число по правому краю поля шириной пять символов.

Это помогает выровнять столбцы вывода.

val x = 7
println(f"[$x%5d]")
println(f"[$x%-5d]")

Интерполятор raw

Интерполятор raw работает как s, но не обрабатывает escape-последовательности.

Поэтому \n остаётся двумя символами — обратной косой чертой и n — вместо преобразования в новую строку.

println(raw"Path: C:\new\test")
println(s"Path: C:\new\test")

Выбор подходящего интерполятора

Используйте s для обычной вставки значений. Выбирайте f, когда требуется форматирование чисел. Используйте raw, если обратные косые черты должны сохраниться буквально, например в путях к файлам или регулярных выражениях.

Все три интерполятора поддерживают $variable и ${expression}.

val v = 1.0
println(s"s: $v")
println(f"f: $v%.2f")
println(raw"raw: $v\n")

Несколько значений вместе

В одну интерполированную строку можно вставить множество переменных и выражений.

По сравнению с длинными цепочками + это делает код вывода компактным и удобным для чтения.

object Main extends App {
  val item = "Coffee"
  val qty = 2
  val cost = 4.5
  println(f"$qty x $item = $$${qty * cost}%.2f")
}

Быстрая проверка

Какой интерполятор сохраняет escape-последовательности в буквальном виде?

Итоги

Вы познакомились с тремя интерполяторами Scala. s вставляет значения с помощью $var и ${expr}.

f добавляет форматирование в стиле printf, например %.2f и %5d. raw ведёт себя как s, но сохраняет escape-последовательности в буквальном виде. Используйте $$, чтобы вывести настоящий знак доллара.

Часто задаваемые вопросы

Урок «Интерполяторы s, f и raw» бесплатный?

Да — полный текст урока «Интерполяторы s, f и raw» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Scala for Backend Engineering & Functional Programming, подпишись на CoddyKit PRO. Курс Scala for Backend Engineering & Functional Programming содержит 4 уроков всего.

Чему я научусь в уроке «Интерполяторы s, f и raw»?

Встраивайте значения в строки. Ты практикуешь Scala for Backend Engineering & Functional Programming с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Scala for Backend Engineering & Functional Programming?

Предыдущий опыт не требуется. Scala for Backend Engineering & Functional Programming на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Интерполяторы s, f и raw»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Scala for Backend Engineering & Functional Programming?

Да. Каждый урок Scala for Backend Engineering & Functional Programming включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы строк
  2. Интерполяторы s, f и raw
  3. Распространённые методы строк
  4. Многострочные строки
← Назад к Scala for Backend Engineering & Functional Programming