[Java] Class CurriedClosure<V>

  • org.codehaus.groovy.runtime.CurriedClosure
public final class CurriedClosure<V>
extends Closure

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 OWNER_FIRST, DELEGATE_FIRST, OWNER_ONLY, DELEGATE_ONLY, TO_SELF, DONE, SKIP, IDENTITY

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
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)

Inherited Methods Summary

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

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/3.0.7/html/gapi/org/codehaus/groovy/runtime/CurriedClosure.html