首页 文章

Groovy - 闭包 - 没有方法签名:FeedClass.feedData()适用于参数类型:(Data,FeedClass $ _closure1)

提问于
浏览
0

我试图理解闭包在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) {

}

1 回答

  • 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"
    }
    

相关问题