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,Serializable,Cloneable,Runnable,Callable<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:
-
Field Summary
Fields inherited from class groovy.lang.Closure
DELEGATE_FIRST, DELEGATE_ONLY, DONE, IDENTITY, maximumNumberOfParameters, OWNER_FIRST, OWNER_ONLY, parameterTypes, SKIP, TO_SELF -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionInvokes the closure with given argument(s), returning any value if applicable.clone()Class[]intGets the strategy which the closure uses to resolve methods and propertiesvoidsetDelegate(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.Closure
andThen, 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.GroovyObjectSupport
getMetaClass, setMetaClassMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface groovy.lang.GroovyObject
invokeMethod
-
Constructor Details
-
ComposedClosure
-
-
Method Details
-
setDelegate
Description copied from class:ClosureAllows the delegate to be changed such as when performing markup building- Overrides:
setDelegatein classClosure<V>- Parameters:
delegate- the new delegate
-
getDelegate
- Overrides:
getDelegatein classClosure<V>- Returns:
- the delegate Object to which method calls will go which is typically the outer class when the closure is constructed
-
setResolveStrategy
public 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 classClosure<V>- Parameters:
resolveStrategy- The resolve strategy to set- See Also:
-
getResolveStrategy
public int getResolveStrategy()Description copied from class:ClosureGets the strategy which the closure uses to resolve methods and properties- Overrides:
getResolveStrategyin classClosure<V>- Returns:
- The resolve strategy
- See Also:
-
clone
-
getParameterTypes
- Overrides:
getParameterTypesin classClosure<V>- Returns:
- the parameter types of the longest doCall method of this closure
-
doCall
-
call
Description copied from class:ClosureInvokes the closure with given argument(s), returning any value if applicable.
-