对于
trait Item
case class TypeA(i: Int) extends Item
case class TypeB(i: Int) extends Item
Run Code Online (Sandbox Code Playgroud)
考虑一个Scala项目列表,例如
val myList = List(TypeA(1), TypeB(11), TypeB(12),
TypeA(2), TypeB(21),
TypeA(3), TypeB(31))
Run Code Online (Sandbox Code Playgroud)
目的是定义一个新slice方法,该方法可以应用到myList谓词或条件作为参数。例如
myList.slice { x => x.isInstanceOf[TypeA] }
Run Code Online (Sandbox Code Playgroud)
会提供
List(List(TypeA(1), TypeB(11), TypeB(12)),
List(TypeA(2), TypeB(21)),
List(TypeA(3), TypeB(31)))
Run Code Online (Sandbox Code Playgroud)
在此示例中,将通过以下方式获得相同的结果
myList.slice { case TypeA(x) => x < 10 }
Run Code Online (Sandbox Code Playgroud)
非常感谢。