比如说,我定义了一个值类,如下所示
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)
错误消息对我来说似乎没那么有意义,就好像我替换collect了map(需要函数而不是部分函数)或类没有扩展AnyVal,代码片段将编译.
有谁可以解释背后的原因或链接到提交的问题?