[英]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.