package variable
import org.codehaus.groovy.runtime.DefaultGroovyMethods
//閉包的使用
//1閉包與基本類型變量結(jié)合使用
//求指定number的階乘
int fab(int number){
????????int result=1
????????1.upto(number,{num ->result *= num})
? ? ?//1是從1開始,到number,1屬于Integer類型,所以可以直接調(diào)用.下面的方式一樣的.因?yàn)? ?upto是DefaultGroovyMethods的靜態(tài)? ?方法.
????//DefaultGroovyMethods.upto(1,number,{num->result *=num})
????return result
????//upto
}
//使用downto方法
int fab2(int number){
????????int result=1?
????????//grovvy中閉包可以不放在括號(hào)內(nèi),可以直接放在括號(hào)外.像下面這張寫法
????????number.downto(1){? ??
????????????????num->result *=num
????????}
????????return result
}
int x=fab(4)
int y=fab2(4)
println x//24 :123*4
println y//24
//累計(jì)求和
int cal(int number){
????int result
????//times方法的參數(shù)也是閉包,閉包寫在括號(hào)外是groovy中很常見的方式.times方法的實(shí)現(xiàn)循環(huán)始終是從0開始的
????number.times {? ??
????????????num->result +=num
? ? ?}
????return result
}
println cal(10)
//閉包傳遞參數(shù)類型及個(gè)數(shù)不知道時(shí),需要查看源碼方法中是如何調(diào)用的