Как расширить список Scala, чтобы включить нарезку не по явной позиции, а по заданному предикату / условию

За

trait Item
case class TypeA(i: Int) extends Item
case class TypeB(i: Int) extends Item

рассмотрим список элементов Scala, таких как

val myList = List(TypeA(1), TypeB(11), TypeB(12), 
                  TypeA(2), TypeB(21), 
                  TypeA(3), TypeB(31))

Цель состоит в том, чтобы определить новыйslice метод, который может быть применен кmyList и который принимает предикат или условие в качестве аргумента; например

myList.slice { x => x.isInstanceOf[TypeA] }

доставит

List(List(TypeA(1), TypeB(11), TypeB(12)), 
     List(TypeA(2), TypeB(21)), 
     List(TypeA(3), TypeB(31)))

В этом примере идентичный результат будет достигнут

myList.slice { case TypeA(x) => x < 10 }

Большое спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос