- 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 |
-
Methods Summary
-
Inherited Methods Summary
Inherited Methods
Methods inherited from class |
Name |
class Closure |
leftShift, leftShift, getDelegate, curry, curry, rightShift, getThisObject, getResolveStrategy, getDirective, isCase, asWritable, rcurry, rcurry, ncurry, ncurry, setResolveStrategy, memoizeAtMost, memoizeAtLeast, setDirective, memoizeBetween, trampoline, trampoline, rehydrate, dehydrate, getMaximumNumberOfParameters, memoize, andThenSelf, andThenSelf, composeSelf, composeSelf, compose, run, getProperty, clone, getParameterTypes, setProperty, getOwner, setDelegate, andThen, call, call, call, setMetaClass, getMetaClass, wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll, invokeMethod |
-
-
Method Detail
-
public Class[] getParameterTypes()
-
public int getResolveStrategy()
-
public void setDelegate(Object delegate)
-
public void setResolveStrategy(int resolveStrategy)
Copyright © 2003-2021 The Apache Software Foundation. All rights reserved.