2017-11-23 7 views
0

基本特性項目のリストを反復し、特定の条件グループに基づいて特定のタイプのすべてのインスタンスをベースにします。 しかし、foldLeft内のmatch節のブランチの1つに構文エラーがあります。foldLeftにSeq [Seq [SomeType]]を累積することができません

trait Base { 
    def foo: Int 
} 
case class TypeA(foo: Int) extends Base 
case class TypeB(foo: Int) extends Base 

object Main { 
    def main(args: Array[String]): Unit = { 
    val items: Seq[Base] = Seq(TypeA(1), TypeB(2), TypeB(3), TypeA(2), TypeA(3)) 

    val typeAs: Seq[Seq[TypeA]] = items.foldLeft(Seq.empty[Seq[TypeA]]) { case (acc, item) => 
     val someCondition = true 
     item match { 
     case el:TypeA => 
      if (acc.nonEmpty) { 
      if (someCondition) 
       acc :+ Seq(Seq(el)) // type mismatch error here 
      else 
       acc.init :+ (acc.last :+ el) 
      } else 
      Seq(Seq(el)) 

     case _:TypeB => 
      acc 
     } 
    } 
    } 
} 

コンパイルでエラーがMavenのコンパイラプラグイン経由でのScala 2.13.3を使用して

error: type mismatch;

found : Seq[Seq[Equals]]

required: Seq[Seq[TypeA]]

acc :+ Seq(Seq(el))

です。

答えて

0

ああは、不注意なミスを犯した のSeq [Aタイプ]アキュムレータ

acc :+ Seq(el)

に追加しようとするべきです
関連する問題