【发布时间】:2015-01-04 02:03:26
【问题描述】:
def check( x: Int, y: Int) (z: Int) = {
x+y+z
} //> check: (x: Int, y: Int)(z: Int)Int
def curried = check _ //> curried: => (Int, Int) => Int => Int
def z = curried(0,0) //> z: => Int => Int
z(3) //> res0: Int = 3
check(1,2)(3) //> res1: Int = 6
check(1,2)(_) //> res2: Int => Int = <function1>
我在 Scala 中有这段代码,我想要实现的是以这种方式调用 check
check(1,2)
不带第三个参数以便以三种方式调用检查
check(1,2)(3) // with three parameters
z(3) // with just one and
check(1,2) with two parameters.
如何在 Scala 和 Java 中做到这一点?我可以在 Java 中将 z 声明为隐式吗? 提前谢谢你。
【问题讨论】:
-
我知道这篇文章,但不幸的是没有帮助我理解如何做到这一点。
标签: java scala functional-programming currying