【问题标题】:Groovy - Closures - No signature of method: FeedClass.feedData() is applicable for argument types: (Data, FeedClass$_closure1)Groovy - 闭包 - 没有方法签名:FeedClass.feedData() 适用于参数类型:(Data, FeedClass$_closure1)
【发布时间】:2018-12-19 12:36:53
【问题描述】:

我试图了解闭包在 Groovy 中的真正工作原理以及如何在方法中传递这些闭包。

我有 FeedClass 和 feedData 方法,在这个方法中我定义了一个闭包。

但是,即使闭包是在方法内部定义的,我也会不断收到错误 No Signature of method... 似乎它期待方法参数中的闭包。

 void feedData(def Data) {

            def calculateData=
                    {
                        if (it.even== null || it.odd== null)
                            println "error"
                        else
                                      println "Ok"
                    }

            Data.numbers.each calculateData
 }

这是类以及我如何调用方法

FeedClass(def 数据) {

feedData(Data) {

}

【问题讨论】:

    标签: groovy closures


    【解决方案1】:

    feedData 方法目前不需要第二个参数,它应该这样声明:

    void feedData(def Data, def calculator) {
        Data.numbers.each(calculateData)
    }
    

    而且可以这样调用:

    feedData(Data) { data ->
        if (data.even == null || data.odd == null)
            println "error"
        else
            println "Ok"
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多