小编use*_*360的帖子

使用partial-function-parameter方法的基类型的Scala值类编译失败

比如说,我定义了一个值类,如下所示

package object p {
  class ValueClass[T](val o: Option[T]) extends AnyVal {
    def foo: Option[T] =
      o collect {
        case t => t
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

编译失败并显示以下消息:

overriding method applyOrElse in trait PartialFunction of type [A1 <: T, B1 >: T](x: A1, default: A1 => B1)B1;
  method applyOrElse has incompatible type
       o collect {
                 ^
Run Code Online (Sandbox Code Playgroud)

错误消息对我来说似乎没那么有意义,就好像我替换collectmap(需要函数而不是部分函数)或类没有扩展AnyVal,代码片段将编译.

有谁可以解释背后的原因或链接到提交的问题?

scala partialfunction higher-order-functions value-class

5
推荐指数
1
解决办法
318
查看次数