Spec-Zone.ru › Scala 2.12 Library

Класс scala.StringContext

Компаньон объект StringContext

случайный класс StringContext(parts: String*) extends Product with Serializable

Этот класс предоставляет базовый механизм для интерполяции строк. Интерполяция строк позволяет пользователям встраивать ссылки на переменные непосредственно в *обработанные* строковые литералы. Вот пример:

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 строковых литералов.

parts

Части, составляющие интерполированную строку, без выражений, которые вставляются интерполяцией.

Источник
StringContext.scala
С

2.10.0

Линейные супертипы

Конструкторы экземпляров

новый StringContext(parts: String*)

parts

Части, составляющие интерполированную строку, без выражений, которые вставляются интерполяцией.

Члены-значения

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

returns

true если !(this == that), в противном случае false.

Definition Classes
AnyRef → Any

final def ##(): Int

Эквивалентно x.hashCode, за исключением упакованных числовых типов и null. Для чисел возвращает значение хеш-кода, согласованное с равенством значений: если два экземпляра типа значения сравниваются как true, тогда ## вернет одно и то же значение хеш-кода для каждого из них. Для null возвращает хеш-код, где null.hashCode выбрасывает NullPointerException.

returns

значение хеш-кода, согласованное с ==

Definition Classes
AnyRef → Any

def +(other: String): String

Неявное
Этот член добавлен неявным преобразованием из StringContext в any2stringadd[StringContext] с помощью метода any2stringadd в scala.Predef.
Definition Classes
any2stringadd

def ->[B](y: B): (StringContext, B)

Неявное
Этот член добавлен неявным преобразованием из StringContext в ArrowAssoc[StringContext] с помощью метода ArrowAssoc в scala.Predef.
Definition Classes
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

returns

true если объект получателя эквивалентен аргументу; false в противном случае.

Definition Classes
AnyRef → Any

final def asInstanceOf[T0]: T0

Преобразовать объект получателя к типу T0.

Обратите внимание, что успех приведения типов во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, а выражение List(1).asInstanceOf[List[String]] — нет. В последнем примере, так как аргумент типа стирается во время компиляции, невозможно проверить, относятся ли содержимое списка к требуемому типу.

returns

объект получателя.

Definition Classes
Any
Исключения

ClassCastException, если объект получателя не является экземпляром стирания типа T0.

def checkLengths(args: Seq[Any]): Unit

Проверяет, что длина данного аргумента args на единицу меньше количества parts, переданных в окружающий StringContext.

Исключения

IllegalArgumentException, если это не так.

def clone(): AnyRef

Создать копию объекта получателя.

По умолчанию метод clone зависит от платформы.

returns

копию объекта получателя.

Атрибуты
protected[lang]
Definition Classes
AnyRef
Аннотации
@throws( ... ) @native()
Примечание

не определен SLS в качестве члена AnyRef

def ensuring(cond: (StringContext) ⇒ Boolean, msg: ⇒ Any): StringContext

Неявное
Этот член добавлен неявным преобразованием из StringContext в Ensuring[StringContext] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: (StringContext) ⇒ Boolean): StringContext

Неявное
Этот член добавлен неявным преобразованием из StringContext в Ensuring[StringContext] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean, msg: ⇒ Any): StringContext

Неявный
Этот член добавлен неявным преобразованием из StringContext в Ensuring[StringContext] с помощью метода Ensuring в scala.Predef.
Классы определений
Ensuring

def ensuring(cond: Boolean): StringContext

Неявный
Этот член добавлен неявным преобразованием из StringContext в Ensuring[StringContext] с помощью метода Ensuring в scala.Predef.
Классы определений
Ensuring

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).

Метод eq реализует отношение эквивалентности на непустых экземплярах AnyRef, и имеет три дополнительных свойства:

    Он согласован: для любых непустых экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false.Для любого непустого экземпляра x типа AnyRef, x.eq(null) и null.eq(x) возвращают false. null.eq(null) возвращает true.

При переопределении методов equals или hashCode важно обеспечить, чтобы их поведение было согласованным с равенством ссылок. Поэтому, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны иметь одинаковое значение хеша (o1.hashCode == o2.hashCode).

возвращает

true если аргумент является ссылкой на объект-получатель; false в противном случае.

Классы определений
AnyRef

macro def f[A >: Any](args: A*): String

Интерполятор форматированных строк.

Он вставляет свои аргументы между соответствующими частями контекста строки. Он также обрабатывает стандартные 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
Исключения

IllegalArgumentException если количество parts в окружающем StringContext не превышает количество аргументов arg ровно на 1.

если строка parts содержит обратный слэш (\) символ, который не начинает корректную escape-последовательность. Примечание: метод f работает путем сборки строки форматирования из всех строк parts и использования java.lang.String.format для форматирования всех аргументов с этой строкой форматирования. Строка форматирования получается путем конкатенации всех строк parts, и выполнением двух преобразований:

    Пусть _позиция форматирования_ - это начало любой строки parts кроме первой. Если позиция форматирования не относится к символу % (который предполагается началом спецификатора форматирования), то вставляется спецификатор формата строки %s. 2. Любые символы % не в позициях форматирования должны начинать одно из преобразований %% (буквальный процент) или %n (платформенно-зависимый разделитель строк).

def finalize(): Unit

Вызывается сборщиком мусора для объекта-получателя, когда больше нет ссылок на объект.

Подробности о том, когда и как вызывается метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями, зависят от платформы.

Атрибуты
protected[lang]
Классы определений
AnyRef
Аннотации
@throws( classOf[java.lang.Throwable] )
Примечание

не указано SLS как член AnyRef

def formatted(fmtstr: String): String

Возвращает строку, отформатированную в соответствии с заданной строкой format. Строки форматирования аналогичны строкам для String.format (@see java.lang.String.format).

Неявный
Этот член добавлен неявным преобразованием из StringContext в StringFormat[StringContext] с помощью метода StringFormat в scala.Predef.
Классы определений
StringFormat
Аннотации
@inline()

final def getClass(): Class[_]

Возвращает представление типа объекта во время выполнения.

возвращает

объект класса, соответствующий типу получателя во время выполнения.

Классы определений
AnyRef → Any
Аннотации
@native()

final def isInstanceOf[T0]: Boolean

Проверка того, является ли динамический тип объекта-получателя T0.

Обратите внимание, что результат проверки модулен по семантике стирания Scala. Поэтому выражение 1.isInstanceOf[String] вернет false, в то время как выражение List(1).isInstanceOf[List[String]] вернет true. В последнем примере, так как тип аргумента стирается во время компиляции, невозможно проверить, содержат ли элементы списка указанный тип.

возвращает

true если объект-получатель является экземпляром стирания типа T0; false в противном случае.

Классы определений
Any

final def ne(arg0: AnyRef): Boolean

Эквивалентно !(this eq that).

возвращает

true если аргумент не ссылка на объект-получатель; false в противном случае.

Классы-определения
AnyRef

final def notify(): Unit

Разбуживает единственную нить, ожидающую монитор объекта-получателя.

Классы-определения
AnyRef
Аннотации
@native()
Примечание

не указано в SLS как член AnyRef

final def notifyAll(): Unit

Разбуживает все нити, ожидающие монитор объекта-получателя.

Классы-определения
AnyRef
Аннотации
@native()
Примечание

не указано в SLS как член AnyRef

val parts: String*

def raw(args: Any*): String

Интерполяция сырых строк.

Она вставляет свои аргументы между соответствующими частями контекста строки. В отличие от простой интерполяции строк s, эта не обрабатывает стандартные управляющие последовательности, как определено в спецификации Scala.

Например, обработанная сырая строка raw"a\nb" эквивалентна строке Scala "a\\nb".

Примечание: Даже при использовании интерполяции сырых строк, Scala будет предварительно обрабатывать управляющие последовательности Unicode. Например:

scala> raw"\u0023"
res0: String = #
Исключения

IllegalArgumentException если количество parts в окружающем StringContext не превышает количество аргументов arg ровно на 1.

Примечание

Компилятор Scala может заменить вызов этого метода эквивалентным, но более эффективным, использованием StringBuilder.

def s(args: Any*): String

Интерполяция простых строк.

Она вставляет свои аргументы между соответствующими частями контекста строки. Она также обрабатывает стандартные управляющие последовательности, как определено в спецификации Scala. Вот пример использования:

val name = "James"
println(s"Hello, $name")  // Hello, James

В этом примере выражение $name заменяется значением переменной toString. Интерполятор s может принимать значение любого произвольного выражения внутри блока ${}, например:

println(s"1 + 1 = ${1 + 1}")

выведет строку 1 + 1 = 2.

Исключения

IllegalArgumentException если количество parts в окружающем StringContext не превышает количество аргументов arg ровно на 1.

StringContext.InvalidEscapeException если строка со специальными символами содержит обратную косую черту (\) символ, который не начинает допустимую управляющую последовательность.

Примечание

Компилятор Scala может заменить вызов этого метода эквивалентным, но более эффективным, использованием StringBuilder.

def standardInterpolator(process: (String) ⇒ String, args: Seq[Any]): String

final def synchronized[T0](arg0: ⇒ T0): T0

Классы-определения
AnyRef

final def wait(): Unit

Классы-определения
AnyRef
Аннотации
@throws( ... )

final def wait(arg0: Long, arg1: Int): Unit

Классы-определения
AnyRef
Аннотации
@throws( ... )

final def wait(arg0: Long): Unit

Классы-определения
AnyRef
Аннотации
@throws( ... ) @native()

def →[B](y: B): (StringContext, B)

Неявный
Этот член добавлен неявным преобразованием из StringContext в ArrowAssoc[StringContext], выполненное методом ArrowAssoc в scala.Predef.
Классы-определения
ArrowAssoc

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/StringContext.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API