Spec-Zone.ru › Scala 2.13 Library

Класс scala.StringContext

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

case class StringContext(parts: String*) extends Product с 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

Линейные надтипы
java.io.Serializable, Product, Equals, AnyRef, Any

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

new StringContext(parts: String*)

parts

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

Значения членов

final def !=(arg0: Any): Boolean

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

возвращает

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

Определяющие классы
AnyRef → Any

final def ##(): Int

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

возвращает

значение хэш-кода, соответствующее ==

Определяющие классы
AnyRef → Any

def +(other: String): String

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

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

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

final def ==(arg0: Any): Boolean

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

возвращает

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

Определяющие классы
AnyRef → Any

final def asInstanceOf[T0]: T0

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

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

возвращает

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

Определяющие классы
Any
Исключения

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

def clone(): AnyRef

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

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

возвращает

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

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()
Примечание

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

def ensuring(cond: (StringContext) => Boolean, msg: => Any): StringContext

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

def ensuring(cond: (StringContext) => Boolean): StringContext

Неявный
Этот член добавляется неявным преобразованием из StringContext в Ensuring[StringContext] с помощью метода Ensuring в scala.Predef.
Определяющие классы
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[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.Throwable])
Примечание

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

def formatted(fmtstr: String): String

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

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

final def getClass(): Class[_ <: AnyRef]

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

возвращает

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

Определяющие классы
AnyRef → Any
Аннотации
@native()

final def isInstanceOf[T0]: Boolean

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

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

returns

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

Definition Classes
Any

final def ne(arg0: AnyRef): Boolean

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

returns

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

Definition Classes
AnyRef

final def notify(): Unit

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

Definition Classes
AnyRef
Annotations
@native()
Note

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

final def notifyAll(): Unit

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

Definition Classes
AnyRef
Annotations
@native()
Note

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

val parts: String*

def productElementNames: Iterator[String]

Итератор по именам всех элементов этого произведения.

Definition Classes
Product

macro def raw(args: Any*): String

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

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

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

Примечание: Даже при использовании интерполятора raw, Scala предварительно обработает escape-последовательности Unicode. Например:

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

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

Примечание

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

macro def s(args: Any*): String

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

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

Исключения

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

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

Примечание

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

final def synchronized[T0](arg0: => T0): T0

Definition Classes
AnyRef

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

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

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException]) @native()

object s

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

Spec-Zone.ru

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