Класс scala.StringContext
case class StringContext(parts: String*)
Этот класс предоставляет базовый механизм для интерполяции строк. Интерполяция строк позволяет пользователям встраивать ссылки на переменные непосредственно в *обрабатываемые* строковые литералы. Вот пример:
val name = "James" println(s"Hello, $name") // Hello, James
Любой обработанный строковый литерал переписывается как создание экземпляра и вызов метода этого класса. Например:
s"Hello, $name"
переписывается как:
StringContext("Hello, ", "").s(name)
По умолчанию этот класс предоставляет методы raw, s и f в качестве доступных интерполяторов.
Чтобы предоставить собственный интерполятор строк, создайте неявный класс, который добавляет метод к StringContext. Вот пример:
implicit class JsonHelper(private val sc: StringContext) extends AnyVal {
def json(args: Any*): JSONObject = ...
}
val x: JSONObject = json"{ a: $a }"
Здесь класс-расширение JsonHelper неявно добавляет метод json к StringContext, который можно использовать для json строковых литералов.
| Параметры значения |
|
|---|---|
| Надтипы |
Классы
Исходный код
объект s
Конкретные методы
Исходный код
Форматированный интерполятор строк.
Вставляет аргументы между соответствующими частями контекста строки. Также обрабатывает стандартные escape-последовательности, как определено в спецификации Scala. Наконец, если выражение интерполяции следует за строкой parts, которая начинается с спецификатора форматирования, выражение форматируется в соответствии с этим спецификатором. Обрабатываются все спецификаторы, разрешенные в строках форматирования Java, и аналогично тому, как они обрабатываются в Java.
Например:
val height = 1.9d val name = "James" println(f"$name%s is $height%2.2f meters tall") // James is 1.90 meters tall
| Параметры значения |
|
|---|---|
| Исключения |
|
Исходный код
Интерполятор строк raw.
Вставляет аргументы между соответствующими частями контекста строки. В отличие от простого интерполятора строк s, этот не обрабатывает стандартные escape-последовательности, как определено в спецификации Scala.
Например, обработанная строка raw raw"a\nb" равна строке scala "a\\nb".
Примечание: Даже при использовании интерполятора raw Scala обработает escape-последовательности Unicode. Обработка Unicode в интерполяторе raw устарела начиная со scala 2.13.2 и будет удалена в будущем. Например:
scala> raw"\u005cu0023" res0: String = #
| Параметры значения |
|
|---|---|
| Исключения |
|
| Примечание | Компилятор Scala может заменить вызов этого метода эквивалентным, но более эффективным использованием StringBuilder. |
Исходный код
Простой интерполятор строк.
Вставляет аргументы между соответствующими частями контекста строки. Также обрабатывает стандартные escape-последовательности, как определено в спецификации Scala. Вот пример использования:
val name = "James" println(s"Hello, $name") // Hello, James
В этом примере выражение $name заменяется toString переменной name. Интерполятор s может принимать toString любого произвольного выражения в ${} блоке, например:
println(s"1 + 1 = ${1 + 1}")
будет выводить строку 1 + 1 = 2.
| Параметры значения |
|
|---|---|
| Исключения |
|
| Примечание | Компилятор Scala может заменить вызов этого метода эквивалентным, но более эффективным использованием StringBuilder. |
Наследованные методы
Исходный код
Итератор по именам всех элементов этого произведения.
| Наследуется от | Product |
|---|
Исходный код
Итератор по всем элементам этого произведения.
| Возвращает | в реализации по умолчанию, |
|---|---|
| Наследуется от | Product |
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/StringContext.html