[英]In Scala, how to convert FilterMonadic to a List?
我從以下行獲得了FilterMonadic
:
val f = ((2 to 10) withFilter (_ > 5) withFilter( _ < 8))
但是,我發現f
沒有toList
方法。 有沒有人有關於如何將其轉換為列表的想法?
withFilter
和filter
方法之間的主要區別是什么?
最簡單的方法可能是f.map(identity)
,它不一定會返回List
,而是根據過濾之前的原始序列類型返回適當的序列類型。
如果要嚴格使用List
,則將結果轉換為List
: f.map(identity).toList
。
至於區別,對於大多數集合, filter
立即執行過濾,在內存中構建一個新集合並返回它, withFilter
返回一個對象,該對象存儲原始集合,並且僅在請求元素時才進行過濾。
您可以使用flatMap
:
scala> val f = ((2 to 10) withFilter (_ > 5) withFilter( _ < 8))
f: scala.collection.generic.FilterMonadic[Int,scala.collection.immutable.IndexedSeq[Int]] = scala.collection.TraversableLike$WithFilter@60b8da0
scala> f.flatMap(List(_)).toList
res0: List[Int] = List(6, 7)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.