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

Groovy学习笔记(4)-闭包

发布时间:2020-12-14 16:42:52 所属栏目:大数据 来源:网络整理
导读:闭包是用{}符号括起来的代码块,它可以被单独运行或调用,也可以被命名,类似‘匿名类’或内联函数的概念。 闭包中最常见的应用是对集合进行迭代。 可以通过.操作符来获得方法闭包。 /** * 闭包 * */class ClosureTest { static main(args) { def clos1={pri

闭包是用{}符号括起来的代码块,它可以被单独运行或调用,也可以被命名,类似‘匿名类’或内联函数的概念。

闭包中最常见的应用是对集合进行迭代。

可以通过.&操作符来获得方法闭包。

/**
 * 闭包
 * */
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]

(编辑:李大同)

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

    推荐文章
      热点阅读