0

i knewt how to add method to metaClass of 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:

 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 ())

Abdennour TOUMI
  • 87,526
  • 38
  • 249
  • 254

1 Answers1

1

You should be able to do:

List.metaClass.average = { Closure c ->
    delegate.sum( c ) / delegate.size()
}
tim_yates
  • 167,322
  • 27
  • 342
  • 338