[Java] Class CurriedClosure<V>

  • org.codehaus.groovy.runtime.CurriedClosure

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"
 
Notes:
  • Caters for Groovy's lazy (rcurry) and eager (ncurry) calculation of argument position
Inherited fields
Fields inherited from class Fields
class Closure DELEGATE_FIRST, DELEGATE_ONLY, DONE, IDENTITY, OWNER_FIRST, OWNER_ONLY, SKIP, TO_SELF, maximumNumberOfParameters, parameterTypes

Constructor Summary

Constructors
Constructor and description
CurriedClosure (int index, Closure<V> uncurriedClosure, Object... arguments)
Creates the curried closure.
CurriedClosure (Closure<V> uncurriedClosure, Object... arguments)

Methods Summary

Methods
Type Params Return Type Name and description
Object clone()
Object getDelegate()
Class[] getParameterTypes()
int getResolveStrategy()
Object[] getUncurriedArguments(Object... arguments)
void setDelegate(Object delegate)
void setResolveStrategy(int resolveStrategy)

Inherited Methods Summary

Inherited Methods
Methods inherited from class Name
class Closure asWritable, call, call, call, clone, curry, curry, dehydrate, getDelegate, getDirective, getMaximumNumberOfParameters, getOwner, getParameterTypes, getProperty, getResolveStrategy, getThisObject, isCase, leftShift, leftShift, memoize, memoizeAtLeast, memoizeAtMost, memoizeBetween, ncurry, ncurry, rcurry, rcurry, rehydrate, rightShift, run, setDelegate, setDirective, setProperty, setResolveStrategy, throwRuntimeException, trampoline, trampoline
class GroovyObjectSupport getMetaClass, getProperty, invokeMethod, setMetaClass, setProperty
class Object wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll

Constructor Detail

public CurriedClosure(int index, Closure<V> uncurriedClosure, 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

public CurriedClosure(Closure<V> uncurriedClosure, Object... arguments)

Method Detail

@SuppressWarnings("unchecked") public Object clone()

public Object getDelegate()

public Class[] getParameterTypes()

public int getResolveStrategy()

public Object[] getUncurriedArguments(Object... arguments)

public void setDelegate(Object delegate)

public void setResolveStrategy(int resolveStrategy)

© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/2.4.21/html/gapi/org/codehaus/groovy/runtime/CurriedClosure.html