Scala предоставляет мощные механизмы интерполяции строк, которые позволяют разработчикам встраивать выражения и переменные в строковые литералы. Два наиболее часто используемых интерполятора в Scala — это интерполятор необработанной строки и интерполятор строки s. В этой статье мы рассмотрим различия между этими двумя интерполяторами и приведем примеры кода, иллюстрирующие их использование.
- Интерполятор необработанных строк:
Интерполятор необработанных строк обозначается префиксом «raw» перед открывающей кавычкой. Он воспринимает обратную косую черту буквально и не интерпретирует escape-последовательности, такие как символы новой строки или табуляции. Это особенно полезно при работе с регулярными выражениями или путями к файлам.
Пример:
val regex = raw"\d{4}-\d{2}-\d{2}"
println(regex) // Output: \d{4}-\d{2}-\d{2}
- Интерполятор строки S:
Интерполятор строки s обозначается префиксом «s» перед открывающей кавычкой. Он позволяет встраивать выражения и переменные непосредственно в строку, как и другие интерполяторы строк. Однако он также поддерживает параметры форматирования с использованием знакомого синтаксиса в стиле printf.
Пример:
val name = "John"
val age = 30
val message = s"My name is $name and I'm $age years old."
println(message) // Output: My name is John and I'm 30 years old.
- Экранирование символов.
Оба интерполятора позволяют экранировать символы с помощью символа обратной косой черты (). Например, если вы хотите включить знак доллара ($) в качестве буквального символа в строку s, вам нужно экранировать его обратной косой чертой (\$).
Пример:
val amount = 100
val message = s"\$$amount is a large sum."
println(message) // Output: $100 is a large sum.
Подводя итог, можно сказать, что интерполятор необработанных строк обрабатывает содержимое строки буквально, а интерполятор строк s оценивает выражения и поддерживает параметры форматирования. Понимание различий между этими двумя интерполяторами поможет вам выбрать подходящий в зависимости от вашего конкретного случая использования.