Особенность scala.Selectable
trait Selectable
Маркерный интерфейс для объектов, поддерживающих структурный выбор через selectDynamic и applyDynamic
Классы-реализации должны определять или предоставлять в качестве расширяющих методов следующие две сигнатуры методов:
def selectDynamic(name: String): Any def applyDynamic(name: String)(args: Any*): Any =
selectDynamic вызывается для простых выборов v.m, а applyDynamic вызывается для выборов с аргументами v.m(...). Если существует только один вид выбора, метод, поддерживающий другой, может быть опущен. Метод applyDynamic также может иметь второй список параметров java.lang.Class аргументов, т.е. он может иметь альтернативную сигнатуру
def applyDynamic(name: String, paramClasses: Class[_]*)(args: Any*): Any
В этом случае вызов будет синтезировать Class аргументы для стирания всех формальных типов параметров метода в структурном типе.
| Супертипы | |
|---|---|
| Известные подтипы |
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/Selectable.html