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))
입니다.