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