【问题标题】:Can I invoke Scala dynamic functions from Groovy?我可以从 Groovy 调用 Scala 动态函数吗?
【发布时间】:2016-06-15 22:34:36
【问题描述】:

我正在用 Scala 编写 Gradle 插件。

为了允许我通过 Gradle DSL 配置插件和相关任务,我需要能够动态调用方法(即实际上不存在的方法)。如果我在 Groovy 中编写插件,我会使用 methodMissingpropertyMissing,如 here 所述。

在 Scala 中,我可以使用 dynamic member lookup 动态调用函数。这在从 Scala 代码调用函数时有效,但我似乎找不到从 Groovy 调用这些动态函数的方法(即,当 Scala 插件用作另一个 Gradle 项目的一部分时)。

是否可以从 Groovy 中利用 Scala 的动态成员查找?或者这是一个死胡同?

【问题讨论】:

    标签: java scala gradle groovy jvm


    【解决方案1】:

    刚刚找到我问题的答案。在 Scala 中,我需要实现相同的 methodMissingpropertyMissing 函数,如果我正在编写 Groovy 类并让 Scala 类扩展 GroovyObjectSupport(Gradle 集成需要)。

    如果其他人试图做类似的事情,下面是您需要实现的 Scala 中的函数签名:

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

    【讨论】:

      猜你喜欢
      • 2014-01-31
      • 2018-02-02
      • 2018-08-10
      • 2016-02-07
      • 1970-01-01
      • 2020-12-20
      • 2017-06-22
      • 2019-04-05
      • 1970-01-01
      相关资源
      最近更新 更多