Esiste qualcosa equivalente alla notevole funzione di SomeClass.metaClass.getProperty di Groovy in scala? Ciò sarebbe molto utile per creare linguaggi specifici di dominio. Ad esempio, potrei quindi dire: val x = SomeClass(); x.arbitraryPropertyName
anziché x.get("arbitraryPropertyName")
o x("arbitraryPropertyName")
.La classe di GroovyX.metaClass.getProperty in scala
5
A
risposta
9
Dalla descrizione, questa funzione suona come Dynamic
di Scala. Da Scaladoc,
Un tratto di contrassegno che consente invocazioni dinamiche. Le istanze x di questo tratto di consentono chiamate x.meth (args) per meth dei nomi di metodi arbitrari e argomenti di argomenti con argomenti . Se una chiamata non è supportata nativamente da x, è riscritta in x.applyDynamic ("meth", args).
Cioè, se la classe estende Dynamic
, poi chiama la forma x.arbitraryPropertyName
ottenere tradotto in x.applyDynamic("arbitraryPropertyName")
, e, naturalmente, si arriva a definire il comportamento di applyDynamic
.