scala - "lst filter isinstanceof map asinstanceof"是否有 Scala 快捷方式?

标签 scala

假设我有一个 List[T],其中 E 扩展了 T。我想获取列表中的所有 E。 我必须做类似的事情:

    val l = list filter {_.isInstanceof[E]} map {_.asInstanceOf[E]}

有什么更好的方法吗?

谢谢

最佳答案

您正在寻找 collect :

scala> trait Quux
defined trait Quux

scala> case class Bar() extends Quux
defined class Bar

scala> case class Baz() extends Quux
defined class Baz

scala> val l = List(Bar(), Baz())
l: List[Product with Serializable with Quux] = List(Bar(), Baz())

scala> l.collect { case bar:Bar => bar }
res1: List[Bar] = List(Bar())

关于scala - "lst filter isinstanceof map asinstanceof"是否有 Scala 快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22846121/

相关文章:

file - 如何将文件源拆分为字符串或单词

scala - Scala 中更高种类/类型绑定(bind)的益智游戏

java - 斯卡拉- Cassandra : cluster read fails with error "Can' t use this Cluster instance because it was previously closed"

java - 隐式 QueryStringBindable java.util.List[models.InputTimeSheetDataStore]

forms - 通过在约束中比较两个表单字段来验证它们

scala - 未找到 Scala 特征中的 @Test 方法

scala - Scala 中的 trait 是否消除了通过依赖注入(inject)添加行为的需要?

scala - 重载泛型隐式转换

scala - neo4j 3.0 嵌入式 - 无节点

java - Play 编译时间太长