闭包火葬场。
- each { } : return ==> (Java) continue ----终止当前循环执行,继续后面的循环
- find { } : return true ==> (Java) break ----终止所有闭包循环,返回当前it;
return false ==> (Java) continue ----终止当前循环执行,继续后面的循环,如果最终没有return true,返回结果是null,find用于查找值,闭包参数用作终止条件(故需要布尔类型),也可以骚操作用来迭代。 - with { } : 如果用来实例化类,别忘了返回值!
def jack = new Person().with { name = "jack" age = 12 //不return自己,就会返回age,最后jack会变成12 return it }
- 闭包嵌套,it傻傻分不清
each { it.each { println it } }
语法骚断腿,使用需谨慎。
// 可以
def s = (1..10000).sum()
println s
//不红,会报错
println (1..10000).sum()
//可以,等于第一个
println((1..10000).sum())
//可以,不会报错,但是不太红,不是我们想要的
1..10000.each {
println it
}
//可以
(1..10000).each {
println it
}
//索引0开始,用值需谨慎
10000.times {
}