一、闭包介绍
二、闭包基础语法
def clouser={ String name->{println "Hello groovy!${name}"return "Hello ${name}"}}def result=clouser("groovy")println result
调用:直接用.call()调用,也可以直接()调用
参数:name便是传递的参数
返回值:直接return返回接口
三、闭包进阶
1、主要参数:this,owner,delegate
- this:代表闭包定义处的类
- owner:代表闭包定义出的类或者对象
- delegate:代表任意对象(默认与owner一致)
场景:
- 在闭包中,三个值都指向闭包
- 在类中的闭包,三个值都指向类
- 在闭包中的闭包,this执行所在的闭包,owner和delegate指向外部的闭包
- delegate默认与owner,但可以通过更改修改delegate指向的值
四、闭包的委托策略
class Student{String namedef pretty={"My name is ${name}"}String toString(){pretty.call()}}class Teacher{String name}def stu=new Student(name:'Sarash')def tea=new Teacher(name:"Ondroid")println stu.toString()stu.pretty.delegate=teastu.pretty.resolveStrategy=Closure.DELEGATE_FIRSTprintln stu.toString()

Student默认指向自身的name:Sarash,通过delegate修改指向到tea的name(name字段必须相同,如果tea没有,则只找student中的)
