Groovy闭包

什么是闭包

闭包在Groovy 的类型是 groovy.lang.Closure,是Groovy的一大利器。

闭包可以视为代码块、语句块、可以访问周围范围内的所有变量或方法。

def z = {
    println "hello" }
z()

很简单,闭包只是一个语句,用大括号包含。您可以将其分配给变量,然后像常规方法调用一样调用此闭包。闭包具有一个默认的隐式参数,称为it。还可以提供自定义的参数。同样,就像方法中的情况一样,闭包的最后一个表达式是闭包的返回值。但是,如果您觉得可读性更高,也可以使用return关键字。

def square = {
    it * it }
assert square(3) == 9
def lengthThan = {
    String s, int i -> return s.size() > i }
//def lengthThan = { String s, int i -> s.size() > i }
assert lengthThan("FunTester", 4) == true
assert lengthThan("Fun", 6) == false

闭包和函数的区别

函数执行之后内部变量全部销毁,但是闭包不会,闭包的外部变量会一直保存。

def static add(num) {
   
    def sum = 0
    sum += num
    return sum
}

def static addByClosure(init) {
   
    def addInner = {
   
        inc ->
        init += inc
        init
    }
    return addInner
}

println "one call: ${add(5)}"  // one call: 5
println "two call: ${add(5)}"  // two call: 5

def addClosure = addByClosure(0)
println "one call: ${addClosure(5)}"  // one call: 5
println "two call: ${addClosure(5)}"  // two call: 10

闭包的常见用法

闭包可以这样写:

  1. def clos = {参数名 -> 代码块}
  2. def clos ={代码块}
def hello = 'Hello'
def clos 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值