我之前问过这个问题:将 PartialFunction 与常规函数结合起来
然后意识到,我实际上并没有问对。所以,这里又进行了一次尝试。
如果我这样做:
val foo = PartialFunction[Int, String] { case 1 => "foo" }
val bar = foo orElse { case x => x.toString }
它不编译:error: missing parameter type for expanded function
The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: PartialFunction[?,?]
但这很好用:
val x: Seq[String] = List(1,2,3).collect { case x => x.toString }
问题是有什么区别?在这两种情况下,参数的类型是相同的:PartialFunction[Int, String]
. 传入的值实际上是相同的。为什么一个案例有效,而另一个案例无效?