groovy闭包中的java所有者

u2nhd7ah  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(343)

根据“groovy in action”,闭包可以通过几种方式声明。有两种方法:def printer={line->println line}def closure getprinter(){return{line->println line}
根据官方文件 owner 结束
返回直接封闭对象,无论是闭包还是类
好的,让我们看看:

class Mother {
    def prop = 'prop'
    def method(){ 'method' }
    Closure birth (param) {
        def local = 'local'
        def closure1 = {
            [ this, prop, method(), local, param ]
        }
        return closure1
    }

    def birth2 = { param ->
        def local = 'local'
        def closure2 = {
            [ this, prop, method(), local, param ]
        }
        return closure2
    }
}
Mother julia = new Mother()
def closure = julia.birth('param')
assert closure.owner == julia
assert closure.delegate == julia

def closure2 = julia.birth2('param')
assert closure2.owner == julia  
assert closure2.delegate == julia

在这两种情况下, birth anb公司 birth2 是否符合文件要求。在这些封闭区内,我们宣布 closure1 以及 closure2 . 我给他们起名字只是为了指代他们。这些东西的主人 closure1 以及 closure2 应参考 birth 以及 birth2 . 根据官方文件。但在第一个例子中 owner 引用类的示例- julia . 在第二个例子中,我相信它指的是 birth2 ,却不知如何Assert。
有人能解释一下区别吗?

jmp7cifd

jmp7cifd1#

birth 是一种方法,而不是闭包 birth2 这是一个结束
这就是区别所在

相关问题