Как расширить список 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 }
Большое спасибо.