【发布时间】:2016-04-04 09:28:42
【问题描述】:
在这种情况下如何为类型参数指定默认值?
def increase[T: Numeric](x: T, y: T): T = implicitly[Numeric[T]].plus(x, y)
val inc = increase _
输出:
C:\Sources\scala\main.scala:12: 错误:找不到隐式 数字类型的证据参数[无] val inc = 增加 _
【问题讨论】:
标签: scala
在这种情况下如何为类型参数指定默认值?
def increase[T: Numeric](x: T, y: T): T = implicitly[Numeric[T]].plus(x, y)
val inc = increase _
输出:
C:\Sources\scala\main.scala:12: 错误:找不到隐式 数字类型的证据参数[无] val inc = 增加 _
【问题讨论】:
标签: scala
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>
【讨论】: