首页 > 解决方案 > 这两个 groovy 调用如何相同?

问题描述

我试图了解如何调用定义为的 groovy 方法:

Number.upto(Number to, Closure closure)

似乎可以通过以下两种方式调用相同的方法:

1.upto(10, {item -> println(item)})

1.upto(10) {item -> println item}

第一个方法调用将 anumber作为第一个参数,将 aclosure作为第二个参数。这与方法定义相匹配。然而,第二个方法调用只需要一个参数,该参数恰好是一个数字。

第二种方法调用如何工作?

标签: groovy

解决方案


第二种方法调用如何工作?

1.upto(10) {item -> println item}

该方法调用有效,因为该upto方法接受 2 个参数。第一个参数是 a Number,第二个参数是 a Closure。将Closure文字作为最终参数传递给方法时,Groovy 允许Closure在括号之外定义文字以提高可读性。

以下相同...

def someClosure = { ... }
4.times(someClosure)

4.times {
    ...
}

4.times({ 
    ... 
})

4.times() {
    ...
}

推荐阅读