关于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?
未完待续....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。