Spec-Zone.ru › Scala 2.13 Library

Трейт scala.Dynamic

trait Dynamic extends Any

Маркерный трейт, который позволяет выполнять динамические вызовы. Экземпляры x этого трейта позволяют вызывать методы x.meth(args) с произвольными именами методов meth и списками аргументов args, а также получать доступ к полям x.field с произвольными именами field.

Если вызов не поддерживается напрямую x (т. е. если проверка типов завершается ошибкой), он переписывается в соответствии со следующими правилами:

foo.method("blah")      ~~> foo.applyDynamic("method")("blah")
foo.method(x = "blah")  ~~> foo.applyDynamicNamed("method")(("x", "blah"))
foo.method(x = 1, 2)    ~~> foo.applyDynamicNamed("method")(("x", 1), ("", 2))
foo.field           ~~> foo.selectDynamic("field")
foo.varia = 10      ~~> foo.updateDynamic("varia")(10)
foo.arr(10) = 13    ~~> foo.selectDynamic("arr").update(10, 13)
foo.arr(10)         ~~> foo.applyDynamic("arr")(10)

Начиная со Scala 2.10, определение прямых или косвенных подклассов этого трейта возможно только в том случае, если функция языка dynamics включена.

Source
Dynamic.scala
Линейные супертипы
Any

Абстрактные члены-значения

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

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

возвращает

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

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

Члены-значения конкретного типа

final def !=(arg0: Any): Boolean

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

возвращает

true если !(this == that), иначе false.

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

final def ##(): Int

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

возвращает

значение хэша, согласованное с ==

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

def +(other: String): String

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

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

Неявный
Этот член добавлен неявным преобразованием из Dynamic вArrowAssoc[Dynamic] с помощью метода 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 в противном случае.

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

final def asInstanceOf[T0]: T0

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

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

возвращает

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

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

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

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

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

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

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

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

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

def ensuring(cond: Boolean): Dynamic

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

def equals(arg0: Any): Boolean

Сравнивает текущий объект (this) с объектом-аргументом (that) на эквивалентность.

Любое реализующее этот метод должно быть отношением эквивалентности:

    Он является рефлексивным: для любого экземпляра x типа Any, x.equals(x) должно возвращать true.Он является симметричным: для любых экземпляров x и y типа Any, x.equals(y) должно возвращать true тогда и только тогда, когда y.equals(x) возвращает true.Он является транзитивным: для любых экземпляров x, y и z типа Any, если x.equals(y) возвращает true и y.equals(z) возвращает true, то x.equals(z) должно возвращать true.

Если вы переопределяете этот метод, убедитесь, что ваша реализация остается отношением эквивалентности. Кроме того, при переопределении этого метода обычно необходимо переопределить hashCode, чтобы гарантировать, что объекты, которые "равны" (o1.equals(o2) возвращает true). имеют одинаковые хэш-коды scala.Int. (o1.hashCode.equals(o2.hashCode)).

возвращает

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

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

def formatted(fmtstr: String): String

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

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

def hashCode(): Int

Вычисляет значение хэш-кода для объекта.

Стандартный алгоритм хэширования зависит от платформы.

Важно понимать, что два объекта могут иметь одинаковые хэш-коды (o1.hashCode.equals(o2.hashCode)) и при этом не быть равными (o1.equals(o2) возвращает false). Вырожденная реализация могла бы всегда возвращать 0. Однако, требуется, чтобы если два объекта равны (o1.equals(o2) возвращает true). то у них были одинаковые хэш-коды (o1.hashCode.equals(o2.hashCode)). Поэтому при переопределении этого метода убедитесь, что поведение согласуется с методом equals.

возвращает

значение хэш-кода для этого объекта.

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

final def isInstanceOf[T0]: Boolean

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

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

возвращает

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

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

def toString(): String

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

Стандартное представление зависит от платформы.

возвращает

строковое представление объекта.

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

© 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/Dynamic.html

Spec-Zone.ru

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