我想編寫一個函數apply_tuple
,使得:傳遞一個元組作爲參數的封閉
apply_tuple(new Tuple(x1, x2, ... , xn), f)
返回:
f(x1, x2, ... , xn);
我怎樣才能做到這一點在Groovy?
我想編寫一個函數apply_tuple
,使得:傳遞一個元組作爲參數的封閉
apply_tuple(new Tuple(x1, x2, ... , xn), f)
返回:
f(x1, x2, ... , xn);
我怎樣才能做到這一點在Groovy?
def apply_tuple(Tuple t, Closure f) {
// inject is just a groovy name for the typical 'fold'
Closure argumentsApplied = t.inject(f) { Closure c, Object tx ->
c.curry(tx)
}
argumentsApplied()
}
或者,如果你並不想已經評價f
而是有興趣的在產生的功能,那麼就去掉()
在argumentsApplied
結束。這是一個更短的版本(但不太可讀的恕我直言),只是這樣做:
def apply_tuple(t, f) {
t.inject(f) { c, o -> c.curry(o) }
}
你想它返回的封閉應用但未執行的元組? – Will