4、Groovy的基本语法(三)--闭包进阶

1、闭包的三个重要变量this, owner, delegate
this:代表闭包定义处的类
owner:代表闭包定义处的类或者对象,优先类,其次才是对象(比如在一个类里定义了一个closer对象,如果在closer里调用owner,那owner到底是类呢还是closer对象呢?优先类,当然是指向所在的类)

delegate:代表任意对象,默认与owner一致(没有重定义的情况下),重定义则可以指向任意的其它对象。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:如果在类中定义了一个闭包,那么thisownerdelegate都指向了这个类,如果在类中,定义了一个闭包,再在闭包中嵌套定义了一个闭包,那么this指向的是这个类,owner和delegate都指向了最近一个闭包对象。

2、闭包的委托策略
在这里插入图片描述
在这里插入图片描述

注意上面有个有个缺陷,就是如果Teacher类里面没有name字段,那么在DELEGATE_FIRST委托策略下,在Teacher当中没有找到需要的对象,则会回到owner当中去找。如果在DELEGATE_ONLY委托策略下,在Teacher当中没有找到需要的对象则会报编译错误。

作者:沧水巫云
博客:http://blog.csdn.NET/amir_zt/
以上原创,转载请注明出处,谢谢。
https://blog.csdn.net/amir_zt/article/details/113738006

猜你喜欢

转载自blog.csdn.net/u011635351/article/details/113738006
今日推荐