2016-06-10 48 views
0

以下方法定義沒有類型參數錯誤:Scala的拋出上有效的λ定義

def validClasses(dataType: DataType) = { 
    examples 
     .flatMap { 
     v: Any => 
      Try { 
      val canon = toCanonicalType(v, dataType) 
      canon.getClass 
      } 
      .toOption 
      .toSet 
     } 
    } 

產生以下錯誤:

Error:(94, 8) no type parameters for method flatMap: (f: Any => scala.collection.GenTraversableOnce[B])(implicit bf: scala.collection.generic.CanBuildFrom[scala.collection.immutable.Set[Any],B,That])That exist so that it can be applied to arguments (Any => scala.collection.immutable.Set[Class[?0]] forSome { type ?0 }) 
--- because --- 
argument expression's type is not compatible with formal parameter type; 
found : Any => scala.collection.immutable.Set[Class[?0]] forSome { type ?0 } 
required: Any => scala.collection.GenTraversableOnce[?B] 
     .flatMap { 
^

哪個奇怪。由於toSet的結果不是某個{type?0}的Set [Class [?0]]。有什麼方法可以解決這個問題嗎?

+1

如果你沒有提供'examples'的類型,怎麼可能有人可以回答你的問題? –

+0

看起來像我的正確類型。你期望它是什麼類型? – JimN

回答

1

As the result of toSet is not a a Set[Class[?0]] forSome { type ?0 }.

是的,它是:.getClass返回Class[_],所以Try { ... }Try[Class[?0]] forSome { type ?0 }?0只是由編譯器產生的變量名),和.toOption.toSetSet[Class[?0]] forSome { type ?0 }

相關問題