Spec-Zone.ru › Scala 3.1

Трейт scala.Dynamic

Исходный код

Трейт Dynamic

Маркерный трейт, который позволяет динамические вызовы. Экземпляры 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 включена.

Надтипы
Класс Any

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/Dynamic.html

Spec-Zone.ru

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