根据“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。
有人能解释一下区别吗?
1条答案
按热度按时间jmp7cifd1#
birth
是一种方法,而不是闭包birth2
这是一个结束这就是区别所在