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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage