2016-06-15 2 views
2

Ich schreibe ein Gradle Plugin in Scala.Kann ich dynamische Scala-Funktionen von Groovy aufrufen?

Damit ich das Plugin und die damit verbundenen Aufgaben über eine Gradle DSL konfigurieren kann, muss ich in der Lage sein, Methoden dynamisch aufzurufen (d. H. Methoden, die eigentlich nicht existieren). Wenn ich das Plugin in Groovy schreiben würde, würde ich methodMissing oder propertyMissing wie beschrieben here verwenden.

In Scala kann ich Funktionen dynamisch mit dynamic member lookup aufrufen. Dies funktioniert beim Aufruf der Funktionen von Scala-Code, aber ich kann anscheinend keine Möglichkeit finden, diese dynamischen Funktionen von Groovy aus aufzurufen (d. H. Wenn das Scala-Plugin als Teil eines anderen Gradle-Projekts verwendet wird).

Ist es möglich, Scala's dynamisches Member-Lookup von Groovy zu verwenden? Oder ist das eine Sackgasse?

Antwort

1

Habe gerade die Antwort auf meine Frage gefunden. In Scala muss ich die gleichen methodMissing und propertyMissing Funktionen implementieren, die ich implementieren würde, wenn ich eine Groovy-Klasse schreiben würde und die Scala-Klasse GroovyObjectSupport erweitern würde (benötigt für Gradle-Integration).

Wenn jemand anderes versucht, unten etwas ähnliches zu tun, um die Funktionssignaturen in Scala sind Sie implementieren müssen:

class Foo extends GroovyObjectSupport { 
    def methodMissing(m: String, arg: Any): Any = ??? 
    def propertyMissing(p: String): Any = ??? 
    def propertyMissing(p: String, v: Any): Any = ??? 
} 
Verwandte Themen