Package org.codehaus.groovy.runtime
Class ComposedClosure<V>
java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.lang.Closure<V>
org.codehaus.groovy.runtime.ComposedClosure<V>
- All Implemented Interfaces:
- GroovyCallable<V>,- GroovyObject,- java.io.Serializable,- java.lang.Cloneable,- java.lang.Runnable,- java.util.concurrent.Callable<V>
public final class ComposedClosure<V> extends Closure<V>
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
 - See Also:
- Serialized Form
- 
Field SummaryFields inherited from class groovy.lang.ClosureDELEGATE_FIRST, DELEGATE_ONLY, DONE, IDENTITY, maximumNumberOfParameters, OWNER_FIRST, OWNER_ONLY, parameterTypes, SKIP, TO_SELF
- 
Constructor SummaryConstructors Constructor Description ComposedClosure(Closure first, Closure<V> second)
- 
Method SummaryModifier and Type Method Description Vcall(java.lang.Object... args)Invokes the closure with given argument(s), returning any value if applicable.java.lang.Objectclone()java.lang.ObjectdoCall(java.lang.Object... args)java.lang.ObjectgetDelegate()java.lang.Class[]getParameterTypes()intgetResolveStrategy()Gets the strategy which the closure uses to resolve methods and propertiesvoidsetDelegate(java.lang.Object delegate)Allows the delegate to be changed such as when performing markup buildingvoidsetResolveStrategy(int resolveStrategy)Sets the strategy which the closure uses to resolve property references and methods.Methods inherited from class groovy.lang.ClosureandThen, andThenSelf, andThenSelf, asWritable, call, call, compose, composeSelf, composeSelf, curry, curry, dehydrate, getDirective, getMaximumNumberOfParameters, getOwner, getProperty, getThisObject, isCase, leftShift, leftShift, memoize, memoizeAtLeast, memoizeAtMost, memoizeBetween, ncurry, ncurry, rcurry, rcurry, rehydrate, rightShift, run, setDirective, setProperty, throwRuntimeException, trampoline, trampolineMethods inherited from class groovy.lang.GroovyObjectSupportgetMetaClass, setMetaClassMethods inherited from class java.lang.Objectequals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface groovy.lang.GroovyObjectinvokeMethod
- 
Constructor Details- 
ComposedClosure
 
- 
- 
Method Details- 
setDelegatepublic void setDelegate(java.lang.Object delegate)Description copied from class:ClosureAllows the delegate to be changed such as when performing markup building- Overrides:
- setDelegatein class- Closure<V>
- Parameters:
- delegate- the new delegate
 
- 
getDelegatepublic java.lang.Object getDelegate()- Overrides:
- getDelegatein class- Closure<V>
- Returns:
- the delegate Object to which method calls will go which is typically the outer class when the closure is constructed
 
- 
setResolveStrategypublic void setResolveStrategy(int resolveStrategy)Description copied from class:ClosureSets the strategy which the closure uses to resolve property references and methods. The default is Closure.OWNER_FIRST- Overrides:
- setResolveStrategyin class- Closure<V>
- Parameters:
- resolveStrategy- The resolve strategy to set
- See Also:
- Closure.DELEGATE_FIRST,- Closure.DELEGATE_ONLY,- Closure.OWNER_FIRST,- Closure.OWNER_ONLY,- Closure.TO_SELF
 
- 
getResolveStrategypublic int getResolveStrategy()Description copied from class:ClosureGets the strategy which the closure uses to resolve methods and properties- Overrides:
- getResolveStrategyin class- Closure<V>
- Returns:
- The resolve strategy
- See Also:
- Closure.DELEGATE_FIRST,- Closure.DELEGATE_ONLY,- Closure.OWNER_FIRST,- Closure.OWNER_ONLY,- Closure.TO_SELF
 
- 
clonepublic java.lang.Object clone()
- 
getParameterTypespublic java.lang.Class[] getParameterTypes()- Overrides:
- getParameterTypesin class- Closure<V>
- Returns:
- the parameter types of the longest doCall method of this closure
 
- 
doCallpublic java.lang.Object doCall(java.lang.Object... args)
- 
callDescription copied from class:ClosureInvokes the closure with given argument(s), returning any value if applicable.
 
-