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

Groovy闭包理解

发布时间:2020-12-14 16:51:09 所属栏目:大数据 来源:网络整理
导读:关于groovy闭包的很多讲解,都是含糊不清,或者是过于“专业”, 现在,我将以一种通俗易懂的方式表述内容 先要声明这里所讲的是groovy闭包,和其他语言的闭包固然不能相等 groovy闭包是指一个可执行的代码块:(定义) ????????? 作为形式可以看成是java中

关于groovy闭包的很多讲解,都是含糊不清,或者是过于“专业”,

现在,我将以一种通俗易懂的方式表述内容

先要声明这里所讲的是groovy闭包,和其他语言的闭包固然不能相等


groovy闭包是指一个可执行的代码块:(定义)

????????? 作为形式可以看成是java中的一个方法,仅限于形式(存在形式);

????????? 比如一个人和一只猫都以生命的形式存在于地球,但是两者所做的很多事是不一样的,而做同一件事也有不同的方式

??????? ? 做同一件事效率也不一样,也就是说各自有各自擅长的方面


我认为定义并不重要,请看一下闭包的使用形式(用法)

????????? def clos = { ? param ->? method?? }

??????? 注:这不是一个正确的表达形式,笔者为了方便解说做了变化,

??????? 上面这个形式:param是参数(方法的参数),当然这里可以有多个参数,多个参数用逗号隔开(没有参数的情况暂不考虑)

??????? method表示方法,这里是写方法的地方,这个方法的参数来自于前面的param参数列表,

??????? 参数和方法之间用“ ->”连接


??????? 看这些理论实在是枯燥,我也不喜欢,下面用举例的方式讲解groovy的闭包一般形式,用法,以及优点

???????

def greeting = 'hello'     //第一行
def clos = {param->println "${greeting} ${param}" }        
clos("jiege")                                                                       
def demo(clo){                                                            
    def greeting = 'jon'
    clo.call("ken")
}
//demo() clos       //error
demo clos        //output : hello ken
demo() {param->println "welcome ${param}"}    //output : welcome ken
demo {param->println "welcome ${param}"}      //output : welcome ken

这个例子取自一本书上,但书上的解释并不好,

我假设看这篇文章的人都是对groovy有基础语法做前提的,所以我并不打算解释groovy的一般语法

第二行代码中的方法部分很简单只有一个输出语句,

第三行代码和第六行是的等效的

第四行把闭包作为一个参数传入demo函数,于是你知道了闭包的这样一种用法,但你并不需要知道为什么可以这样

看了第九行输出结果你也许已经开始注意在第五行了,对,这行确实没有起到任何作用,why?

????????????


未完待续....

(编辑:李大同)

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

    推荐文章
      热点阅读