简单代码: 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]



答案 0 :(得分:1)
您的代码与(注意括号)相同:
{ -> item++}({ item -> item++})
两个闭包的定义完全正确。问题在于,实际上第一个闭包是在第二个闭包作为参数传递的情况下运行的。这完全一样:
{ it -> it() } { println 1 }
由于您无法在++
对象Closure
上调用MissingMethodException
。这将正常工作,例如:
{ item -> item()++ }{ 1 }
闭包{1}
作为参数传递,调用()
并且结果递增++
。
要验证闭包定义是否正确,请运行:
def a = { -> item++ }
def b = { item -> item++ }