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

groovy入门4 闭包简介

发布时间:2020-12-14 16:44:22 所属栏目:大数据 来源:网络整理
导读:1?闭包 闭包是一个代码块,用{}括起来。与java不同的是,groovy中程序代码也成为一种数据,可以被一个变量所引用。 javascript中var f = function(){} 格式为 { ? ?参数- ? ? 代码 } 具体例子如下: def clouser1 = { ? ? println it //it默认参数 } clouser1
1?闭包
闭包是一个代码块,用{}括起来。与java不同的是,groovy中程序代码也成为一种数据,可以被一个变量所引用。
javascript中var f = function(){}
格式为
{ ? ?参数->
? ? 代码
}
具体例子如下:
def clouser1 = {
? ? println it //it默认参数
}
clouser1.call('zhang')

def closer2 = {
? ? text ->
? ? println text //一个参数
}
closer2('this is close2')

def closer3 = {
//多个参数
? ? name,age->
? ? println "This is ${name},${age} yeas old"
}
closer3('zhangsan',20)
额外说明:groovy的这种将代码块赋值给变量的做法和javascript也有像,不过javascript的写法是var f = function(){}
2?delegate
其实delegate和java中的上下文类似,delegate将指定待执行代码的对象。类似于java中
的代码:
interface Target{
? ? void surf();
}
class Aoo implments?Target{
? ? public void surf(){
? ? ? ? System.out.println("Aoo surfing");
? ? }
}
class Boo implemets?Target{
? ? public void surf(){
? ? ? ? System.out.println("Aoo surfing");
? ? }
? ? private?Target target;
? ? public Boo(){}
? ? public Boo(Target target){
? ? ? ? this.target = target;
? ? }
? ? public void invoke(){
? ? ? ? target.surf();
? ? }
}
groovy的delegate属性:
class Net{
? ?
? ? def work = {
? ? ? ? println 'Net is working' ?
? ? }
? ? def surf={
? ? ? ? println 'Net is surfing'
? ? }
}

class AdaptNet{

? ? def work = {
? ? ? ? println 'AdaptNet is working'
? ? }
? ? def surf ={
? ? ? ? println 'AdaptNet is surfing'
? ? }
? ?
? ? def invoke(closer){
? ? ? ?closer.delegate = new Net()
? ? ? ?// closer.delegate = new AdaptNet()// close.surf将输出"AdaptNet is surfing"
? ? ? ?closer.surf()//将输出'Net is surfing
? ? ? ?work()
? ? }
}

new AdaptNet().invoke{}
3闭包访问集合
def array =[1,2,3,4,5]
array.each{
? ? print ?it+' '
}

def maps = [name:'s1',age:10,score:85]

maps.each{
? ? data->
? ? print data.key+':'+data.value+' '
}

(编辑:李大同)

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

    推荐文章
      热点阅读