次のような関数を書きたいと思います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
ください。これは、まさにそれを行うさらに短いバージョン(ただし、読みにくいIMHO)です。
def apply_tuple(t, f) {
t.inject(f) { c, o -> c.curry(o) }
}