GDK Extensions to Object

Groovy adds a number of methods to java.lang.Object, most of which deal with types that serve as collections or aggregates, such as Lists or DOM Nodes.

Return Value Method Description
Boolean any {closure} returns true if the closure returns true for any item
List collect {closure} returns a list of all items that were returned from the closure
Collection collect(Collection collection) {closure} same as above, but adds each item to the given collection
void each {closure} simply executes the closure for each item
void eachWithIndex {closure} same as each{} except it passes two aruments: the item and the index
Boolean every {closure} returns true if the closure returns true for all items
Object find {closure} returns the first item that matches the closure expression
List findAll {closure} returns all items that match the closure expression
Integer findIndexOf {closure} returns the index of the first item that matched the given expression

See the GDK documentation on Object for the complete list of added methods.

Since the "return" keyword is optional in Groovy, closures in this context act as "predicates" and return the boolean result of whatever expression you given in your closure. These predicates allow you to apply perform operations on aggregate objects in a very concise manner.

Examples

def numbers = [ 5, 7, 9, 12 ]
assert numbers.any { it % 2 == 0 }                        //returns true since 12 is even

assert numbers.every { it > 4 }                           //returns true since all #s are > 4

assert numbers.findAll { it in 6..10 } == [7,9]           //returns all #s > 5 and < 11

assert numbers.collect { ++it } == [6, 8, 10, 13]         //returns a new list with each # incremented

numbers.eachWithIndex{ num, idx -> println "$idx: $num" } //prints each index and number

Labels

 
(None)