为什么隐式转换不适用于PartialFunction



假设我定义以下内容:

type Func1 = PartialFunction[Int, String]
case class A(f: Int => String)
implicit def toA(func: Func1): A = A(func(_))

然后我可能想使用隐式转换,因此:

val a: A = {
case i: Int => i.toString
}

但现在它确实编译了。然而,明确使用该函数是可以的:

val a: A = toA({
case i: Int => i.toString
})

为什么会这样?

val f = {
case i: Int => i.toString
}

也不编译:

扩展函数缺少参数类型

匿名函数的参数类型必须是完全已知的。(SLS8.5(

预期类型为:?

val f = {

根据Scaladocs,工作代码是

val f: PartialFunction[Int, String] = {
case i: Int => i.toString
}

如果您想要隐式转换,请尝试

val a: A = {
case i: Int => i.toString
} : PartialFunction[Int, String]

相关内容

  • 没有找到相关文章