Groovy 将元组作为闭包的参数传递
我想编写一个函数Groovy 将元组作为闭包的参数传递,groovy,functional-programming,Groovy,Functional Programming,我想编写一个函数apply\u 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(
apply\u 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
求值,而是要对结果函数感兴趣,那么只需删除参数末尾的()
。下面是一个更简短的版本(但可读性较差的IMHO),它只实现了以下功能:
def apply_tuple(t, f) {
t.inject(f) { c, o -> c.curry(o) }
}
我想你误解了我的问题。仔细看一看我想要的结果,特别是把一个元组作为一个参数。然后请更具体地考虑你想要的结果。我提出的解决方案在哪些方面不符合您的要求?您既不希望f的结果作为参数应用于元组的元素,也不希望函数的第一个参数固定为元组的元素。那还有什么呢?我只是在你的问题中没有看到第三个选项。你想让它返回应用了元组但未执行的闭包吗?