我知道如何将方法添加到java.util.List
的metaClass:
java.util.List.metaClass.average={
return delegate.sum()/delegate.size();
}
如果我有def myList=[new Person(score:1),new Person(score:2)]
,我会按以下方式调用新方法:
myList.average();
但是,我想将其称为:
myList.average{it.score}
如何将此方法添加到metaClass以调用Closure({}
而不是()
)
答案 0 :(得分:1)
你应该可以这样做:
List.metaClass.average = { Closure c ->
delegate.sum( c ) / delegate.size()
}