2017-11-23 2 views
0

기본 특성 항목의 목록을 반복하고 특정 조건 그룹을 기반으로 특정 유형의 모든 인스턴스를 반복해야합니다. 하지만 foldLeft 내부에있는 match 절의 분기 중 하나에서 구문 오류가 발생했습니다. 컴파일에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 
     } 
    } 
    } 
} 

오류는 받는다는 컴파일러 플러그인을 통해 스칼라 2.13.3를 사용

error: type mismatch;

found : Seq[Seq[Equals]]

required: Seq[Seq[TypeA]]

acc :+ Seq(Seq(el))

입니다.

답변

0

아은 부주의 한 실수를 서열 [TYPEA] 누적

acc :+ Seq(el)

에 추가하는 것을 시도해야 하는가