我刚刚开始使用 Groovy,来自 Haskell、C++ 和一点 Java 的背景。
假设我写了一个如下的闭包:
def mult = { x, y -> x * y }
以后我就可以写了mult(3,5)
。
但是如果我写mult(3)
,我会得到一个编译错误。
我当然可以写mult.curry(3)
,但这对我来说似乎有点难看。
那么我可以尝试这种方法:
def mult = { x -> { y -> x * y }}
现在,mult(3)
工作正常,但要乘以两个数字,我必须写mult(3)(5)
乘以两个数字。
我想要的是两全其美。我希望能够写mult(3)
,mult(3,5)
并且mult(3)(5)
。无论如何要让闭包表现得像这样?