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
,java.io.Serializable
,java.lang.Cloneable
,java.lang.Runnable
,java.util.concurrent.Callable<V>
public final class CurriedClosure<V> extends Closure<V>
A wrapper for Closure to support currying. Normally used only internally through thecurry()
,rcurry()
orncurry()
methods onClosure
. 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:
- Serialized Form
-
-
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 Constructor Description CurriedClosure(int index, Closure<V> uncurriedClosure, java.lang.Object... arguments)
CurriedClosure(Closure<V> uncurriedClosure, java.lang.Object... arguments)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone()
java.lang.Object
getDelegate()
java.lang.Class[]
getParameterTypes()
int
getResolveStrategy()
Gets the strategy which the closure users to resolve methods and propertiesjava.lang.Object[]
getUncurriedArguments(java.lang.Object... arguments)
void
setDelegate(java.lang.Object delegate)
Allows the delegate to be changed such as when performing markup buildingvoid
setResolveStrategy(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, trampoline
-
Methods inherited from class groovy.lang.GroovyObjectSupport
getMetaClass, invokeMethod, setMetaClass
-
-
-
-
Method Detail
-
getUncurriedArguments
public java.lang.Object[] getUncurriedArguments(java.lang.Object... arguments)
-
setDelegate
public void setDelegate(java.lang.Object delegate)
Description copied from class:Closure
Allows the delegate to be changed such as when performing markup building- Overrides:
setDelegate
in classClosure<V>
- Parameters:
delegate
- the new delegate
-
getDelegate
public java.lang.Object getDelegate()
- Overrides:
getDelegate
in 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:Closure
Sets the strategy which the closure uses to resolve property references. The default is Closure.OWNER_FIRST- Overrides:
setResolveStrategy
in classClosure<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
-
getResolveStrategy
public int getResolveStrategy()
Description copied from class:Closure
Gets the strategy which the closure users to resolve methods and properties- Overrides:
getResolveStrategy
in classClosure<V>
- Returns:
- The resolve strategy
- See Also:
Closure.DELEGATE_FIRST
,Closure.DELEGATE_ONLY
,Closure.OWNER_FIRST
,Closure.OWNER_ONLY
,Closure.TO_SELF
-
getParameterTypes
public java.lang.Class[] getParameterTypes()
- Overrides:
getParameterTypes
in classClosure<V>
- Returns:
- the parameter types of the longest doCall method of this closure
-
-