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

Groovy的闭包

发布时间:2020-12-14 16:46:03 所属栏目:大数据 来源:网络整理
导读:闭包(Closure)是Java所不具备的语法结构。闭包就是一个代码块,用 { } 包起来。此时,程序代码也就成了数据,可以被一个变量所引用。闭包的最典型应用是实现回调函数calback。 1、闭包的定义 闭包的创建过程如下 { 参数 - 代码... } def c1 = {println it}

闭包(Closure)是Java所不具备的语法结构。闭包就是一个代码块,用 { } 包起来。此时,程序代码也就成了数据,可以被一个变量所引用。闭包的最典型应用是实现回调函数calback。

1、闭包的定义

闭包的创建过程如下

{ 参数 ->

代码...

}

def c1 = {println it}
def c2 = {text-> println text}
c1.call('test content') // 用call方法调用闭包
c2('test content') // 直接调用闭包
-> 之前的部分为闭包的参数,如果存在多个参数,之间可用逗号分割。如果省略了->,可以用名为 it ?的变量访问参数。

闭包的返回至,如果有return语句,则返回值是return语句后面的内容;如果没有return,则闭包的最后一行代码就是返回值。

2、闭包在GDK中的使用

a、each方法

进行遍历,每次取得集合的一个元素传入闭包

def xxx = ""
(1..10).each{
  xxx += it
}
// xxx 的结果为”12345678910“
def yyy = [key1:"value1",key2:'value2']
yyy.each{elem ->
  println entry.key
}
b、findAll方法

遍历集合,每次取得集合的一个元素,传入闭包,将能使闭包返回真的元素组成一个新的集合。

[1,3,5,7].findAll{it > 4}
// 返回结果为[5,7]
c、collect方法

遍历集合,将闭包的返回值构成一个新的集合

[1,7].collect{
  it * it
}
// 返回结果为[1,9,25,49]
d、any方法

遍历集合,若有一个元素能使闭包返回真,则立即返回真

[1,7].any{
  it * it == it + 6
}
// 结果为true,并且不进行下面的遍历
e、every方法

遍历集合,弱全部元素都能使闭包返回真,则返回真

同d中的示例代码,返回false

(编辑:李大同)

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

    推荐文章
      热点阅读