码迷,mamicode.com
首页 > 其他好文 > 详细

Groovy中closure的delegate

时间:2015-01-19 14:31:29      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:groovy   closure   

hello.groovy

import groovy.lang.Closure

Closure clos = { println "Hello closure"}
println "delegate:" + clos.delegate.class.name;
println "owner: " + clos.owner.class.name;

clos.call();

println "==============================="

class C {
	
		Closure clos = {
			
		println this.class.name
		println "delegate:" + delegate.class.name;
		println "owner: " + owner.class.name;	
		
		def nestClos = {
				println "in nest delegate:" + delegate.class.name
				println "in nest owner:" + owner.class.name;
				
		}
		
		nestClos()
		}	
}

def cls = new C().clos;
cls();
println "====== afer reset delegate for outer clos ====="
cls.delegate = this
cls();

output:

delegate:hello
owner: hello
Hello closure
===============================
C
delegate:C
owner: C
in nest delegate:C$_closure1
in nest owner:C$_closure1
====== afer reset delegate for outer clos =====
C
delegate:hello
owner: C
in nest delegate:C$_closure1
in nest owner:C$_closure1


Groovy中closure的delegate

标签:groovy   closure   

原文地址:http://blog.csdn.net/cleverwyq/article/details/42871899

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!