1.闭包的便利性
看下面一个例子:
偶数求和
def sum(n){
int sum = 0;
for(int i=2;i<n;i+=2){
//
sum +=i;
}
sum;
}
int sum = sum(10);
print(sum)
求积
def sum(n){
int sum = 0;
for(int i=2;i<n;i+=2){
//
sum *=i;
}
sum;
}
这些代码循环是一样的,只是功能不一样下面就用到了闭包先看例子
def sum(n,b){
for(int i=2;i<n;i+=2){
b(i);
}
}
sum(10,{print it})
用{}括号起来的是闭包,变量b保存了一个指向闭包的引用,然后调用了该闭包,代码中的it是什么意思?
当向闭包中传递只传递一个参数的时候那么这个it就代表你传递过来的参数这里it表示代码中的i,当然也可以使用类似于java8这种方法
sum(10,number ->{print number})
对求和改造
def total = 0;
sum(10,{total += it})
print total
对求积改造
def total = 1;
sum(10,{total *= it})
print total
这样我们只需要将功能用闭包来实现不用写许多重复的代码
2.闭包使用方法
前面表示在调用参数的时候调用闭包下面介绍将闭包赋值给变量进行调用
def sum(n,b){
def total =0
for(i in 1..n){
if(b(i)){
total +=i;
}
}
total
}
int total = 0;
def c = {it%2==0}
print(sum(10,c))
c变量定义了闭包
3.向闭包传递参数
前面闭包中传递的都是一个参数都是用it来进行指定,如果有多个参数那么就要用名字一一列出了
def tell(b){
//向闭包中传递参数
b "我是中","国人" //这里传递参数
}
tell({s1,s2 -> print(s1+s2)}) //业务处理逻辑在闭包