【发布时间】:2013-01-08 23:52:49
【问题描述】:
我刚刚开始使用 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)。无论如何要让闭包表现得像这样?
【问题讨论】: