Over a million developers have joined DZone.

Closure Composition in Groovy

DZone's Guide to

Closure Composition in Groovy

· Java Zone ·
Free Resource

Take 60 minutes to understand the Power of the Actor Model with "Designing Reactive Systems: The Role Of Actors In Distributed Architecture". Brought to you in partnership with Lightbend.

This is a short blog post about a feature of Groovy closures I discovered a few days ago: Closure Composition.

With Closure Composition we can chain closure calls within a single closure.

Assume we have the following three closures:

def square = { it * it }
def plusOne = { it + 1 }
def half = { it / 2 }

Now we can combine those closures using the << or >> operators:

def c = half >> plusOne >> square

If we now call c() first half() will be called. The return value of half() will then be passed toplusOne(). At last square() will be called with the return value of plusOne().

println c(10) // (10 / 2 + 1)² -> 36

We can reverse the call order by using the << operator instead of >>

def c = half << plusOne << square

Now square() will be called before plusOne(). half() will be called last.

println c(10) // (10² + 1) / 2 -> 50.5

Learn how the Actor model provides a simple but powerful way to design and implement reactive applications that can distribute work across clusters of cores and servers. Brought to you in partnership with Lightbend.


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}