Package org.codehaus.groovy.runtime
Class CurriedClosure<V>
java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.lang.Closure<V>
org.codehaus.groovy.runtime.CurriedClosure<V>
- All Implemented Interfaces:
GroovyCallable<V>,GroovyObject,Serializable,Cloneable,Runnable,Callable<V>
A wrapper for Closure to support currying.
Normally used only internally through the
curry(), rcurry() or
ncurry() methods on Closure.
Typical usages:
// normal usage
def unitAdder = { first, second, unit -> "${first + second} $unit" }
assert unitAdder(10, 15, "minutes") == "25 minutes"
assert unitAdder.curry(60)(15, "minutes") == "75 minutes"
def minuteAdder = unitAdder.rcurry("minutes")
assert minuteAdder(15, 60) == "75 minutes"
// explicit creation
import org.codehaus.groovy.runtime.CurriedClosure
assert new CurriedClosure(unitAdder, 45)(15, "minutes") == "60 minutes"
assert new CurriedClosure(unitAdder, "six", "ty")("minutes") == "sixty minutes"
- Author:
- Jochen Theodorou, Paul King
- 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
ConstructorsConstructorDescriptionCurriedClosure(int index, Closure<V> uncurriedClosure, Object... arguments) CurriedClosure(Closure<V> uncurriedClosure, Object... arguments) -
Method Summary
Modifier and TypeMethodDescriptionclone()Class[]intGets the strategy which the closure users to resolve methods and propertiesObject[]getUncurriedArguments(Object... arguments) voidsetDelegate(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.Methods inherited from class groovy.lang.Closure
asWritable, call, call, call, 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, invokeMethod, setMetaClass
-
Constructor Details
-
CurriedClosure
-
CurriedClosure
-
-
Method Details
-
getUncurriedArguments
-
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. 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 users 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
-