Groovy 将`with`与CliBuilder一起使用时出现意外行为

Groovy 将`with`与CliBuilder一起使用时出现意外行为,groovy,Groovy,给定一个脚本test.groovy def cli = new CliBuilder().with {} println cli cli = new CliBuilder() cli.with {} println cli 当我运行groovy test.groovy时,输出是 null groovy.util.CliBuilder@3c22fc4c 为什么第一个输出行为null?这是我的groovy--versioninfo: Groovy Version: 2.4.3 JVM: 1.8

给定一个脚本
test.groovy

def cli = new CliBuilder().with {}
println cli

cli = new CliBuilder()
cli.with {}
println cli
当我运行
groovy test.groovy
时,输出是

null
groovy.util.CliBuilder@3c22fc4c
为什么第一个输出行
为null
?这是我的
groovy--version
info:

Groovy Version: 2.4.3 JVM: 1.8.0_40 Vendor: Oracle Corporation OS: Mac OS X

它是
null
,因为
with(Closure c)
应该返回
委托
(这里委托是
CliBuilder
的一个实例),该委托将被分配给
cli
。用作:

def cli = new CliBuilder().with { it }

它是
null
,因为
with(Closure c)
应该返回
委托
(这里委托是
CliBuilder
的一个实例),该委托将被分配给
cli
。用作:

def cli = new CliBuilder().with { it }

您没有从传递给方法的闭包返回任何内容,因此
with
返回
null
,并且
cli
在第一个示例中变为
null
您没有从传递给方法的闭包返回任何内容,因此
with
返回
null
,在第一个示例中,
cli
变为
null