2014-11-25 72 views

回答

2

代表设置是否能够存活?

如果通过“生存”,您的意思是克隆将具有相同的代表,那么答案是“是”。

groovy:000> c = { 
groovy:001>  append 'Hello' 
groovy:002> } 
===> [email protected] 
groovy:000> 
groovy:000> c.delegate = new StringBuffer() 
===> 
groovy:000> d = c.clone() 
===> [email protected] 
groovy:000> 
groovy:000> c.delegate 
===> 
groovy:000> d.delegate 
===> 
groovy:000> c() 
===> Hello 
groovy:000> c.delegate 
===> Hello 
groovy:000> d.delegate 
===> Hello 
groovy:000> d.delegate.append 'Goodbye' 
===> HelloGoodbye 
groovy:000> c.delegate 
===> HelloGoodbye 
groovy:000> d.delegate 
===> HelloGoodbye 
groovy:000> 

根据具体情况,如果你写它接受一个封闭的方法和你的方法是要改变封闭的状态(如修改委托或resolveStrategy)正常的事情,那么正确的事要做的通常是克隆闭包,然后只改变克隆中的那些属性,使原始的一个与通过时一样完整。

相关问题