Groovy中的闭包

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)}) //业务处理逻辑在闭包

4.使用闭包进行资源清理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值