美文网首页
Groovy 闭包

Groovy 闭包

作者: MiBoy | 来源:发表于2018-11-05 14:36 被阅读11次

    好久没动笔(键盘)了,发现自己变懒了。但是在实际的工作过程中,总是责怪自己没有动笔把自己之前的遇到的问题记录下来,等过一段时间之后,自己好要重新去搜索解决问题的办法,所以有些东西还得需要自己记下来,不然以后就又忘了。

    浅谈闭包。

    记得两年前也遇到过闭包这些名词,当时也去看了一些定义,强迫自己去理解,但当自己重新看的时候,却感觉有点陌生。最近在看《Android gradle 权威指南 》,讲到闭包的时候感觉自己有些不理解,然后就是百度了,偶然在百度百科上看见了对闭包的解释,稍微看了一下,竟然说的直截了当。比如:闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取[局部变量],所以闭包可以理解成“定义在一个[函数]内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。 比我在书上看的明白多了。

    Groovy

    闭包(Closure)是Java所不具备的语法结构(JAVA8增加了对闭包的支持)。闭包就是一个代码块,用“{ }”包起来。此时,程序代码也就成了数据,可以被一个变量所引用(与C语言的函数指针比较类似)。闭包的最典型的应用是实现回调函数(callback)。Groovy的API大量使用闭包,以实现对外开放。闭包的创建过程很简单,例如:

    { 参数 ->

    代码...

    }

    参考下面的例子代码,定义了c1和c2两个闭包,并对它们进行调用:

    def c1 = { println it }
    
    def c2 = { text -> println text }
    
    c1.call("content1") //用call方法调用闭包
    
    c2("content2") //直接调用闭包
    

    “->;”之前的部分为闭包的参数,如果有多个参数,之间可用逗号分割;“->;”之后的部分为闭包内的程序代码。如果省略了“->;”和它之前的部分,此时闭包中代码,可以用名为“it”的变量访问参数。

    闭包的返回值和函数的返回值定义方式是一样的:如果有return语句,则返回值是return语句后面的内容;如果没有return语句,则闭包内的最后一行代码就是它的返回值。

    行了先记录到此。最后附上链接:
    百度百科:闭包

    相关文章

      网友评论

          本文标题:Groovy 闭包

          本文链接:https://www.haomeiwen.com/subject/nsrsxqtx.html