【问题标题】:scala: default values for function with type parameters; used in partial applied contextscala:具有类型参数的函数的默认值;在部分应用上下文中使用
【发布时间】: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


【解决方案1】:

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>

【讨论】:

  • 那么,从字面上看,在这种情况下您必须指定默认类型?哦..我明白了,看起来很明显的答案。看起来必须修改问题标题..谢谢
猜你喜欢
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 2018-02-18
  • 2014-02-27
  • 1970-01-01
相关资源
最近更新 更多