簡體   English   中英

是否存在“lst filter isinstanceof map asinstanceof”的Scala快捷方式?

[英]Is there a Scala shortcut for “lst filter isinstanceof map asinstanceof”?

假設我有一個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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM