2011-12-06 8 views
5

Groovyの注目すべきSomeClass.metaClass.getProperty関数がscalaにありますか?これは、ドメイン固有の言語を作成する際に非常に役立ちます。たとえば、x.get("arbitraryPropertyName")またはx("arbitraryPropertyName")ではなく、val x = SomeClass(); x.arbitraryPropertyNameと言うことができます。GroovyのclassX.metaClass.getProperty in scala

答えて

9

あなたの説明から、この機能はScalaのDynamicのように聞こえます。 Scaladocから、

ダイナミックな呼び出しを可能にするマーカー特性。この のインスタンスxは、任意のメソッド名の場合はx.meth(args)を呼び出し、 の引数の場合は引数をリストします。呼び出しがxによってネイティブにサポートされていない場合は、 がx.applyDynamic( "meth"、args)に書き換えられます。あなたのクラスがDynamicを拡張する場合、ある

、その後、x.applyDynamic("arbitraryPropertyName")に変換されますフォームx.arbitraryPropertyNameの呼び出し、そしてもちろん、あなたはapplyDynamicの動作を定義するために得ます。