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, unitNotes:->"${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"- Caters for Groovy's lazy (rcurry) and eager (ncurry) calculation of argument position
 - See Also:
- Serialized Form
 
- 
- 
Field Summary- 
Fields inherited from class groovy.lang.ClosureDELEGATE_FIRST, DELEGATE_ONLY, DONE, IDENTITY, maximumNumberOfParameters, OWNER_FIRST, OWNER_ONLY, parameterTypes, SKIP, TO_SELF
 
- 
 - 
Constructor SummaryConstructors Constructor Description CurriedClosure(int index, Closure<V> uncurriedClosure, java.lang.Object... arguments)Creates the curried closure.CurriedClosure(Closure<V> uncurriedClosure, java.lang.Object... arguments)
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Objectclone()java.lang.ObjectgetDelegate()java.lang.Class[]getParameterTypes()intgetResolveStrategy()Gets the strategy which the closure uses to resolve methods and propertiesjava.lang.Object[]getUncurriedArguments(java.lang.Object... arguments)voidsetDelegate(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.ClosureasWritable, 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.GroovyObjectSupportgetMetaClass, invokeMethod, setMetaClass
 
- 
 
- 
- 
- 
Constructor Detail- 
CurriedClosurepublic CurriedClosure(int index, Closure<V> uncurriedClosure, java.lang.Object... arguments)Creates the curried closure.- Parameters:
- index- the position where the parameters should be injected (-ve for lazy)
- uncurriedClosure- the closure to be called after the curried parameters are injected
- arguments- the supplied parameters
 
 
- 
 - 
Method Detail- 
getUncurriedArgumentspublic java.lang.Object[] getUncurriedArguments(java.lang.Object... arguments) 
 - 
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
 
 - 
getParameterTypespublic java.lang.Class[] getParameterTypes() - Overrides:
- getParameterTypesin class- Closure<V>
- Returns:
- the parameter types of the longest doCall method of this closure
 
 
- 
 
-