[Java] Class ComposedClosure<V>

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

A wrapper for Closure to support composition. Normally used only internally through the rightShift() and leftShift() methods on Closure.

Typical usages:

 def twice = { a -> a * 2 }
 def inc = { b -> b + 1 }
 def f = { x -> twice(inc(x)) } // longhand
 def g = inc >> twice
 def h = twice << inc
 assert f(10) == 22
 assert g(10) == 22
 assert h(10) == 22

 def s2c = { it.chars[0] }
 def p = Integer.&toHexString >> s2c >> Character.&toUpperCase
 assert p(15) == 'F'

 def multiply = { a, b -> a * b }
 def identity = { a -> [a, a] }
 def sq = identity >> multiply
 assert (1..5).collect{ sq(it) } == [1, 4, 9, 16, 25]

 def add3 = { a, b, c -> a + b + c }
 def add2plus10 = add3.curry(10)
 def multBoth = { a, b, c -> [a*c, b*c] }
 def twiceBoth = multBoth.rcurry(2)
 def twiceBothPlus10 = twiceBoth >> add2plus10
 assert twiceBothPlus10(5, 10) == 40
 
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
ComposedClosure (Closure first, Closure<V> second)

Methods Summary

Methods
Type Params Return Type Name and description
public V call(Object args)
public Object clone()
public Object doCall(Object args)
public Object getDelegate()
public Class[] getParameterTypes()
public int getResolveStrategy()
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 ComposedClosure(Closure first, Closure<V> second)

Method Detail

@Override public V call(Object args)

public Object clone()

public Object doCall(Object args)

public Object getDelegate()

public Class[] getParameterTypes()

public int getResolveStrategy()

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/ComposedClosure.html