scala:具有类型参数的函数的默认值;用于部分应用的上下文中

时间:2016-04-04 09:28:42

标签: scala

如何在此上下文中指定type参数的默认值?

def increase[T: Numeric](x: T, y: T): T = implicitly[Numeric[T]].plus(x, y)

val inc = increase _

输出:

  

C:\ Sources \ scala \ main.scala:12:错误:无法找到隐含的   Numeric类型的证据参数[Nothing]           val inc =增加_

1 个答案:

答案 0 :(得分:2)

increase具有泛型类型参数。当您尝试将方法解析为函数时,它会隐式尝试查找需要解析方法的类型T。由于您尚未指定任何类型,因此它会尝试查找Numeric[Nothing]并发现范围内没有此类隐式可用。

您需要为每个分辨率明确指定类型T

scala> val intInc = increase[Int] _
inc: (Int, Int) => Int = <function2>

scala> val doubleInc = increase[Double] _
doubleInc: (Double, Double) => Double = <function2>