如何将类声明为使用隐式参数扩展函数

Gre*_*idt 2 scala function implicit

我想定义一个带有一个显式参数和一个隐式参数的函数,如下所示:

def foo(a: Int)(implicit b: Int) : Int
Run Code Online (Sandbox Code Playgroud)

但作为一个类或对象,就像这样

object Foo extends ((Int,Int) => Int) {
  def apply(a: Int)(implicit b: Int) : Int = { ... }
}
Run Code Online (Sandbox Code Playgroud)

这样可以像这样调用函数:

implicit val b = 2
val g = Foo(1)
Run Code Online (Sandbox Code Playgroud)

我没有得到哪个类Foo应该扩展的基础声明.如何才能做到这一点?

Hei*_*ger 5

你不能.Function2 [T1,T2,R]声明抽象方法apply(t1:T1,t2:T2):R,所以如果你想在Function2中混合,你必须实现这个具有不同签名的arity-2 apply方法比你想要使用的咖喱版本.