简体   繁体   English

将Closure方法添加到groovy类的metaClass

[英]add Closure method to metaClass of groovy class

i knewt how to add method to metaClass of java.util.List : 我知道如何将方法添加到java.util.List metaClass java.util.List

java.util.List.metaClass.average={

       return delegate.sum()/delegate.size();
}

and if i have def myList=[new Person(score:1),new Person(score:2)] , i call to new method as following: 并且如果我有def myList=[new Person(score:1),new Person(score:2)] ,我将按以下方式调用new方法:

 myList.average(); 

However, i want to call it as following : 但是,我想这样称呼它:

   myList.average{it.score}

How can i add this method to metaClass to be called as Closure( {} and not () ) 我怎样才能将此方法添加到metaClass称为Closure( {}而不是()

You should be able to do: 您应该能够:

List.metaClass.average = { Closure c ->
    delegate.sum( c ) / delegate.size()
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM