闭包是用{}符号括起来的代码块,它可以被单独运行或调用,也可以被命名,类似‘匿名类’或内联函数的概念。
闭包中最常见的应用是对集合进行迭代。
可以通过.&操作符来获得方法闭包。
/** * 闭包 * */ class ClosureTest { static main(args) { def clos1={println "hello Jack"} //两种调用方式 clos1.call() clos1() //参数化的闭包 def clos2={param -> println "hello ${param}"} clos2.call('Tom') clos2('Lucy') //单个隐参数 def clos3={println "hello ${it}"} //这里的it为隐性变量 clos3.call('aaa') //闭包作用范围 def greeting='welcome' def clos4={param -> println "${greeting} ${param}"} clos4.call('Terry') greeting='come here' clos4.call('Terry') def test=new Closuretest() test.demo(clos4) //闭包在集合中的高效使用 [1,2,3,4].each {println it} ['Jack':24,'Terry':26,'Lucy':22].each {if(it.key=='Terry') println it.value} def value=[2,8,9,1,10].findAll({it>8}) //finlAll println value } def demo(clos){ def greeting='hi' clos.call('Jack') } }
hello Jack hello Jack hello Tom hello Lucy hello aaa welcome Terry come here Terry come here Jack 1 2 3 4 26 [9,10]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。