Класс StringContext.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 строковых литералов.
| Параметры значения |
|
|---|---|
| Супертипы |
Классы
Исходный код
object 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
| Параметры значения |
|
|---|---|
| Исключения |
|
Исходный код
Интерполятор сырых строк.
Вставляет свои аргументы между соответствующими частями контекста строки. В отличие от простого интерполятора строк s, этот не обрабатывает стандартные escape-последовательности, как определено в спецификации Scala.
Например, обработанная сырая строка raw"a\nb" равна строке scala "a\\nb".
Примечание: Даже при использовании интерполятора raw Scala будет обрабатывать Unicode-escape-последовательности. Обработка 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.2.0/scala/StringContext.html