- 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
-
-
Methods Summary
-
Inherited Methods Summary
Inherited Methods
Methods inherited from class |
Name |
class Closure |
andThen, andThenSelf, andThenSelf, asWritable, call, call, call, clone, compose, composeSelf, composeSelf, curry, curry, dehydrate, doCall, 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, setMetaClass |
-
-
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.