假设我定义以下内容:
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]