加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy 闭包

发布时间:2020-12-14 16:56:46 所属栏目:大数据 来源:网络整理
导读:??????闭包(Closure)类似于 Java 语言中的匿名内部类。闭包和匿名内部类都是可执行的一段代码,不过这两者之间有一些细微的不同。状态是自动传入传出闭包的。闭包可以有名字。它们可以重复使用。而且,最重要且对 Groovy 同样成立的是,闭包远比匿名内部类
??????闭包(Closure)类似于 Java 语言中的匿名内部类。闭包和匿名内部类都是可执行的一段代码,不过这两者之间有一些细微的不同。状态是自动传入传出闭包的。闭包可以有名字。它们可以重复使用。而且,最重要且对 Groovy 同样成立的是,闭包远比匿名内部类要灵活得多!闭包用以下方法定义:
  1. {[comma-separated-Arguments-list?->]?statements?}

????闭包用“{}”括起,“->”前面是参数,后面是处理语句。

??? 闭包至少会有一个参数 “it”,它其实是参数表中的第一个参数,所以如果闭包定义中只有一个参数,可以省略不写,而使用缺省的参数“it”。对于没有参数定义的闭包,“it”的值就是 null 。

??? 闭包通过 call() 方法被调用。在底层,call() 方法实现了对闭包隐含的doCall()方法的调用。

????几个简单的例子:

  1. closure?=?{?name?->???????????????
  2. ????println("hello?${name}")?
  3. }closure.call("world!")
  1. closure?=?{?greeting,?name?->?????????????
  2. ????println(greeting?+?name)?
  3. }closure("hello?",?"world!")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读