美文网首页Android开发经验谈Android开发Android技术知识
对 Groovy 闭包(this、owner、delegate)

对 Groovy 闭包(this、owner、delegate)

作者: 4ff5e1e6459f | 来源:发表于2018-04-20 16:33 被阅读168次

    this 指向定义闭包的对象或静态类

    owner 跟 this 一样,如果闭包定义在另一个闭包内部,owner 就指向此闭包

    delegate 跟 owner 一样,但可以修改

    别的语言的闭包,比如 Java,在闭包里访问变量或者调用方法,寻找这些变量和方法的顺序是:

    1、闭包作用域

    2、方法作用域 / 外层闭包作用域

    3、类作用域

    Groovy 的顺序是:

    1、this

    2、owner

    3、delegate

    在 this、owner 对象上寻找对应 Java 的 1-2-3 作用域

    delegate 的意义

    它的主要作用是让你在定义闭包时访问一些你不拥有的变量,例如:

    闭包

    这个花括号就是一个闭包,在这个闭包里面访问了 minSdkVersion、targetSdkVersion、versionCode 三个变量。闭包执行时会先在 this、owner 两个对象上面寻找这三个变量,因为你没有定义这三个变量,所以最后就到 delegate 对象上去找。

    defaultConfig 是 android gradle 插件定义的一个方法,你把闭包传给它,它设置闭包的 delegate 为一个配置对象,然后执行闭包。闭包执行时在 delegate (也就是这个配置对象)上找到这三个变量并修改它们。

    这个闭包虽然不是在配置对象内部定义,但通过设置 delegate,它还是能修改配置对象,这就是 delegate 的意义。

    相关文章

      网友评论

        本文标题:对 Groovy 闭包(this、owner、delegate)

        本文链接:https://www.haomeiwen.com/subject/gnqzkftx.html