假設我定義以下內容:
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
})
為什么是這樣?
uj5u.com熱心網友回復:
val f = {
case i: Int => i.toString
}
也不編譯:
擴展函式缺少引數型別
匿名函式的引數型別必須是完全已知的。( SLS 8.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]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/512162.html
下一篇:將IndexedSeq轉換為陣列
