Groovy Documentation

## org.codehaus.groovy.runtime
[Java] Class ComposedClosure

    java.lang.Object
      groovy.lang.GroovyObjectSupport
          groovy.lang.Closure
              org.codehaus.groovy.runtime.ComposedClosure

    public final class ComposedClosure
    extends Closure

A wrapper for Closure to support composition. Normally used only internally through the `rightShift()` and `leftShift()` methods on `Closure`.

Typical usages:

     def twice = { a -> a * 2 }
     def inc = { b -> b + 1 }
     def f = { x -> twice(inc(x)) } // longhand
     def g = inc >> twice
     def h = twice << inc
     assert f(10) == 22
     assert g(10) == 22
     assert h(10) == 22

     def s2c = { it.chars[0] }
     def p = Integer.&toHexString >> s2c >> Character.&toUpperCase
     assert p(15) == 'F'

     def multiply = { a, b -> a * b }
     def identity = { a -> [a, a] }
     def sq = identity >> multiply
     assert (1..5).collect{ sq(it) } == [1, 4, 9, 16, 25]

     def add3 = { a, b, c -> a + b + c }
     def add2plus10 = add3.curry(10)
     def multBoth = { a, b, c -> [a*c, b*c] }
     def twiceBoth = multBoth.rcurry(2)
     def twiceBothPlus10 = twiceBoth >> add2plus10
     assert twiceBothPlus10(5, 10) == 40

Authors:
  Paul King

Field Summary

Fields inherited from class Closure
DELEGATE_FIRST, DELEGATE_ONLY, DONE, IDENTITY, OWNER_FIRST, OWNER_ONLY, SKIP, TO_SELF, maximumNumberOfParameters, parameterTypes

Constructor Summary
`ComposedClosure(Closure first, Closure second)`

Method Summary
`java.lang.Object` | `call(java.lang.Object... args)`
`java.lang.Object` | `clone()`
`java.lang.Object` | `doCall(java.lang.Object... args)`
`java.lang.Object` | `getDelegate()`
`java.lang.Class[]` | `getParameterTypes()`
`int` | `getResolveStrategy()`
`void` | `setDelegate(java.lang.Object delegate)`
`void` | `setResolveStrategy(int resolveStrategy)`

Methods inherited from class Closure

asWritable, call, call, call, clone, curry, curry, dehydrate, getDelegate, getDirective, getMaximumNumberOfParameters, getOwner, getParameterTypes, getProperty, getResolveStrategy, getThisObject, isCase, leftShift, leftShift, memoize, memoizeAtLeast, memoizeAtMost, memoizeBetween, ncurry, ncurry, rcurry, rcurry, rehydrate, rightShift, run, setDelegate, setDirective, setProperty, setResolveStrategy, throwRuntimeException, trampoline, trampoline

Methods inherited from class GroovyObjectSupport
getMetaClass, getProperty, invokeMethod, setMetaClass, setProperty

Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()

Constructor Detail

### ComposedClosure

    public ComposedClosure(Closure first, Closure second)

Method Detail

### call

    @Override
    public java.lang.Object call(java.lang.Object... args)

### clone

    public java.lang.Object clone()

### doCall

    public java.lang.Object doCall(java.lang.Object... args)

### getDelegate

    public java.lang.Object getDelegate()

### getParameterTypes

    public java.lang.Class[] getParameterTypes()

### getResolveStrategy

    public int getResolveStrategy()

### setDelegate

    public void setDelegate(java.lang.Object delegate)

### setResolveStrategy

    public void setResolveStrategy(int resolveStrategy)

Groovy Documentation