簡體   English   中英

在Scala中,如何將FilterMonadic轉換為列表?

[英]In Scala, how to convert FilterMonadic to a List?

我從以下行獲得了FilterMonadic

val f = ((2 to 10) withFilter (_ > 5) withFilter( _ < 8))

但是,我發現f沒有toList方法。 有沒有人有關於如何將其轉換為列表的想法?

withFilterfilter方法之間的主要區別是什么?

最簡單的方法可能是f.map(identity) ,它不一定會返回List ,而是根據過濾之前的原始序列類型返回適當的序列類型。

如果要嚴格使用List ,則將結果轉換為Listf.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.

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