Class scala.util.DynamicVariable
class DynamicVariable[T] extends AnyRef
Конструкторы экземпляров
новый DynamicVariable(init: T)
Члены-значения
окончательный def !=(arg0: Any): Boolean
Проверка двух объектов на неравенство.
- возвращает
trueесли !(this == that), в противном случае false.
- Определяющие классы
- AnyRef → Any
окончательный def ##(): Int
Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для чисел возвращает значение хэш-кода, соответствующее равенству значений: если два экземпляра типа значения сравниваются как true, то ## вернёт одно и то же значение хэш-кода для каждого из них. Для null возвращает хэш-код, где null.hashCode выбрасывает NullPointerException.
- возвращает
значение хэш-кода, соответствующее ==
- Определяющие классы
- AnyRef → Any
def +(other: String): String
- Неявный
- Этот член добавляется неявным преобразованием из DynamicVariable[T] вany2stringadd[DynamicVariable[T]] выполненного методом any2stringadd в scala.Predef.
- Определяющие классы
- any2stringadd
def ->[B](y: B): (DynamicVariable[T], B)
- Неявный
- Этот член добавляется неявным преобразованием из DynamicVariable[T] вArrowAssoc[DynamicVariable[T]] выполненным методом ArrowAssoc в scala.Predef.
- Определяющие классы
- ArrowAssoc
- Аннотации
- @inline()
окончательный def ==(arg0: Any): Boolean
Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).
- возвращает
trueесли объект получателя эквивалентен аргументу;falseв противном случае.
- Определяющие классы
- AnyRef → Any
окончательный def asInstanceOf[T0]: T0
Преобразование объекта получателя в тип T0.
Обратите внимание, что успех преобразования во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, в то время как выражение List(1).asInstanceOf[List[String]] не выбросит. В последнем примере, поскольку аргумент типа стирается во время компиляции, проверить, содержатся ли элементы списка в запрошенном типе, невозможно.
- возвращает
объект получателя.
- Определяющие классы
- Any
- Исключения
ClassCastExceptionесли объект получателя не является экземпляром стирания типаT0.
def clone(): AnyRef
Создаёт копию объекта получателя.
По умолчанию реализация метода clone зависит от платформы.
- возвращает
копию объекта получателя.
def ensuring(cond: (DynamicVariable[T]) => Boolean, msg: => Any): DynamicVariable[T]
- Неявный
- Этот член добавляется неявным преобразованием из DynamicVariable[T] вEnsuring[DynamicVariable[T]] выполненным методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: (DynamicVariable[T]) => Boolean): DynamicVariable[T]
- Неявный
- Этот член добавлен неявным преобразованием из DynamicVariable[T] в Ensuring[DynamicVariable[T]], выполненным методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean, msg: => Any): DynamicVariable[T]
- Неявный
- Этот член добавлен неявным преобразованием из DynamicVariable[T] в Ensuring[DynamicVariable[T]], выполненным методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Boolean): DynamicVariable[T]
- Неявный
- Этот член добавлен неявным преобразованием из DynamicVariable[T] в Ensuring[DynamicVariable[T]], выполненным методом 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
def equals(arg0: AnyRef): Boolean
Метод равенства для типов ссылок. По умолчанию делегирует вызов eq.
См. также equals в scala.Any.
- возвращает
trueесли принимаемый объект эквивалентен аргументу;falseв противном случае.
- Определяющие классы
- AnyRef → Any
def finalize(): Unit
Вызывается сборщиком мусора для принимаемого объекта, когда больше нет ссылок на объект.
Подробности о том, когда и если вызывается метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями, зависят от платформы.
def formatted(fmtstr: String): String
Возвращает строку, отформатированную согласно данной строке format. Строки форматирования аналогичны строкам форматирования в String.format (@см. java.lang.String.format).
- Неявный
- Этот член добавлен неявным преобразованием из DynamicVariable[T] в StringFormat[DynamicVariable[T]] выполненным методом StringFormat в scala.Predef.
- Определяющие классы
- StringFormat
- Аннотации
- @inline()
final def getClass(): Class[_ <: AnyRef]
Возвращает представление класса объекта во время выполнения.
- возвращает
объект класса, соответствующий типу во время выполнения получателя.
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- возвращает
значение хэш-кода для этого объекта.
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
final def synchronized[T0](arg0: => T0): T0
- Определяющие классы
- AnyRef
def toString(): String
Создаёт строковое представление этого объекта. По умолчанию представление зависит от платформы. На платформе Java это конкатенация имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.
- возвращает
строковое представление объекта.
- Определяющие классы
- DynamicVariable → AnyRef → Any
def value: T
def value_=(newval: T): Unit
Изменить текущее связанное значение, отбросив старое. Обычно withValue() обеспечивает лучшую семантику.
final def wait(): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long, arg1: Int): Unit
- Определяющие классы
- AnyRef
- Аннотации
- @throws(classOf[java.lang.InterruptedException])
final def wait(arg0: Long): Unit
def withValue[S](newval: T)(thunk: => S): S
Устанавливает значение переменной во время выполнения указанного thunk.
- newval
Значение, на которое нужно установить переменную
- thunk
Код для вычисления в новом контексте
© 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/util/DynamicVariable.html
DynamicVariablesобеспечить механизм связывания, где текущее значение находится через динамический контекст, но доступ к самой переменной решается через статический контекст.Текущее значение можно получить с помощью метода value. Новые значения должны быть установлены с помощью метода
withValue. Значения, установленные черезwithValue, остаются действительными только пока выполняется второй аргументwithValue, безаргументная замыкание. Когда второй аргумент завершается, переменная возвращается к предыдущему значению.someDynamicVariable.withValue(newValue) { // ... code called in here that calls value ... // ... will be given back the newValue ... }Каждый поток получает свой собственный стек связываний. При создании нового потока,
DynamicVariableполучает копию стека связываний родительского потока, и с этого момента связывания для нового потока независимы от связываний исходного потока.2.6