抓到:groovy.lang.MissingMethodException:没有方法签名

时间:2015-10-04 06:37:35

标签: groovy

简单代码: ClosuresSyntax.groovy




  { - > item ++}
 {item  - > item ++}
  




它会导致异常:




  Caught: groovy.lang.MissingMethodException:没有方法签名:
 com.lucaslee.groovy.syntax.ClosuresSyntax $ _run_closure1.call()适用于参数类型:
(com.lucaslee.groovy.syntax.ClosuresSyntax $ _run_closure2)值:
 [com.lucaslee.groovy.syntax.ClosuresSyntax$_run_closure2@1534f01b]
  



1 个答案:

答案 0 :(得分:1)

您的代码与(注意括号)相同:

{ -> item++}({ item -> item++})

两个闭包的定义完全正确。问题在于,实际上第一个闭包是在第二个闭包作为参数传递的情况下运行的。这完全一样:

{ it -> it() } { println 1 }

由于您无法在++对象Closure上调用MissingMethodException。这将正常工作,例如:

{ item -> item()++ }{ 1 }

闭包{1}作为参数传递,调用()并且结果递增++

要验证闭包定义是否正确,请运行:

def a = { -> item++ }
def b = { item -> item++ }