Closure Composition in Groovy
Join the DZone community and get the full member experience.
Join For FreeThis 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
Published at DZone with permission of Michael Scharhag, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Trending
-
Developers Are Scaling Faster Than Ever: Here’s How Security Can Keep Up
-
RBAC With API Gateway and Open Policy Agent (OPA)
-
Tomorrow’s Cloud Today: Unpacking the Future of Cloud Computing
-
What Is TTS and How Is It Implemented in Apps?
Comments