So erweitern Sie eine Scala-Liste, um das Schneiden nicht nach expliziter Position, sondern nach gegebenem Prädikat / gegebener Bedingung zu ermöglichen
Zum
trait Item
case class TypeA(i: Int) extends Item
case class TypeB(i: Int) extends Item
Betrachten Sie eine Scala-Liste von Elementen wie
val myList = List(TypeA(1), TypeB(11), TypeB(12),
TypeA(2), TypeB(21),
TypeA(3), TypeB(31))
Ziel ist es, ein neues zu definierenslice
Methode, die angewendet werden kannmyList
und die ein Prädikat oder eine Bedingung als Argument nimmt; zum Beispiel
myList.slice { x => x.isInstanceOf[TypeA] }
würde liefern
List(List(TypeA(1), TypeB(11), TypeB(12)),
List(TypeA(2), TypeB(21)),
List(TypeA(3), TypeB(31)))
In diesem Beispiel würde ein identisches Ergebnis erzielt werden durch
myList.slice { case TypeA(x) => x < 10 }
Danke vielmals.