2016-06-15 9 views
2

私はScalaでGradleプラグインを作成しています。GroovyからScala動的関数を呼び出せますか?

Gradle DSLを介してプラグインと関連タスクを設定できるようにするには、メソッドを動的に呼び出すことができる必要があります(実際には存在しないメソッド)。私がGroovyでプラグインを書いていたのであれば、hereのようにmethodMissingまたはpropertyMissingを使用します。

Scalaでは、dynamic member lookupを使用して動的に関数を呼び出すことができます。これはScalaコードから関数を呼び出すときに機能しますが、Groovyからこれらの動的関数を呼び出す方法を見つけることができません(Scalaプラグインを別のGradleプロジェクトの一部として使用する場合)。

Scalaの動的メンバー参照をGroovyから利用できますか?それとも、これは行き詰まりですか?

答えて

1

私の質問に対する答えを見つけました。 Scalaでは、Groovyクラスを作成していて、ScalaクラスをGroovyObjectSupport(Gradleの統合に必要)まで拡張する場合、同じmethodMissingpropertyMissingの関数を実装する必要があります。

誰が下記の似た何かをしようとしている場合は、実装する必要がScalaでは関数シグネチャです:

class Foo extends GroovyObjectSupport { 
    def methodMissing(m: String, arg: Any): Any = ??? 
    def propertyMissing(p: String): Any = ??? 
    def propertyMissing(p: String, v: Any): Any = ??? 
} 
関連する問題