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