如果我们有一个接受匿名函数的方法A => B
作为参数,我们可以使A
隐含在我们的调用中。
def impl(a: Int)(f: Int => Int): Int = f(a)
impl(a) { implicit z =>
...
}
但是我们可以使用具有多个参数的匿名函数来做到这一点吗?
def impl(a: Int, b: Int)(f: (Int, Int) => Int): Int = f(a, b)
理想情况下,这会像这样工作:
impl(1, 2) { implicit (a, b) => // wrong
...
}
Or
impl(1, 2) { (implicit a, implicit b) => // also wrong
...
}
我可以使用解决这个问题A => B => C
, 反而:
def impl(a: Int, b: Int)(f: Int => Int => Int): Int = f(a)(b)
impl(1, 2) { implicit a => implicit b =>
...
}
但是有没有办法在不柯里化函数的情况下做到这一点呢?
这应该是显而易见的,但是Int
这里只是一个虚拟占位符。