2011-12-06 11 views
5

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

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.

Problemi correlati