package variable
import org.codehaus.groovy.runtime.DefaultGroovyMethods
//闭包的使用
//1闭包与基本类型变量结合使用
//求指定number的阶乘
int fab(int number){
int result=1
1.upto(number,{num ->result *= num})
//1是从1开始,到number,1属于Integer类型,所以可以直接调用.下面的方式一样的.因为 upto是DefaultGroovyMethods的静态 方法.
//DefaultGroovyMethods.upto(1,number,{num->result *=num})
return result
//upto
}
//使用downto方法
int fab2(int number){
int result=1
//grovvy中闭包可以不放在括号内,可以直接放在括号外.像下面这张写法
number.downto(1){
num->result *=num
}
return result
}
int x=fab(4)
int y=fab2(4)
println x//24 :123*4
println y//24
//累计求和
int cal(int number){
int result
//times方法的参数也是闭包,闭包写在括号外是groovy中很常见的方式.times方法的实现循环始终是从0开始的
number.times {
num->result +=num
}
return result
}
println cal(10)
//闭包传递参数类型及个数不知道时,需要查看源码方法中是如何调用的