[英]Groovy: add a method to a closure
我有以下關閉
def closure = {
println ("closure code")
}
我想為其添加一種方法。 但是如果我嘗試
closure.metaClass.fun = { c->
c.call();
println ("extra code");
}
我得到一個例外
groovy.lang.MissingPropertyException: No such property: fun for class: org.codehaus.groovy.runtime.metaclass.ClosureMetaClass
閱讀另一個答案,我也盲目地打電話給
ExpandoMetaClass.enableGlobally()
但它不起作用。
有沒有辦法實現我想要的?
你可以做:
def closure = {
println "closure code"
}
closure.getMetaClass().fun = { ->
delegate.call()
println "extra code"
}
closure.fun()
哪些打印:
closure code
extra code
另一種更簡單的方法可能是:
def closure = {
println "closure code"
}
closure.fun = { ->
closure()
println "extra code"
}
closure.fun()
這種方法的缺點是我直接引用了閉包變量,而不是通過委托。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.