【问题标题】:PartialFunction type inference in ScalaScala 中的 PartialFunction 类型推断
【发布时间】:2010-10-07 07:56:20
【问题描述】:

让我们考虑以下函数:

def printPfType[T](pf:PartialFunction[T, _])(implicit m:Manifest[T]) = {
  println(m.toString)
}

然后我定义如下测试类:

case class Test(s:String, i:Int)

我写不出来:

printPfType {
  case Test(_,i) => i
}

因为编译器无法推断 PartialFunction 的第一个参数类型。我必须明确指定它:

printPfType[Test] {
  case Test(_,i) => i
}

但随后Test 类型出现了两次。有没有避免这种情况的技术?如何帮助类型推断器避免重复?

【问题讨论】:

    标签: scala type-inference


    【解决方案1】:

    看到这个thread。类型推断无法处理这个问题。引用规范:

    可以定义匿名函数 通过一系列案例{案例p1 => b1 。 . . case pn => bn } 显示为没有 a 的表达式 之前的比赛。 此类的预期类型 必须部分定义表达式。 它必须是 scala.Functionk[S1, . . . , Sk, R] 对于某些 k > 0,或 scala.PartialFunction[S1, R],其中 参数类型 S1, . . . , 斯克 必须完全确定,但 结果类型 R 可能未确定。

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多