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
Constructor and description |
---|
ComposedClosure
(Closure first, Closure<V> second) |
Type Params | Return Type | Name and description |
---|---|---|
|
V |
call(Object args) |
|
Object |
clone() |
|
Object |
doCall(Object args) |
|
Object |
getDelegate() |
|
Class[] |
getParameterTypes() |
|
int |
getResolveStrategy() |
|
void |
setDelegate(Object delegate) |
|
void |
setResolveStrategy(int resolveStrategy) |
Copyright © 2003-2020 The Apache Software Foundation. All rights reserved.