首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Enumerator[T]转换为List[T]

将Enumerator[T]转换为List[T]
EN

Stack Overflow用户
提问于 2014-08-11 19:55:39
回答 2查看 133关注 0票数 4

我正在将使用ReactiveMongo的应用程序与遗留应用程序集成。

因此,我必须在某一时刻维护遗留应用程序接口,我必须阻止和/或将代码转换为指定的接口类型。我把这段代码浓缩到下面的例子中。

有比getChunks更好的方法来使用所有的枚举数,输出类型是一个列表吗?标准的做法是什么?

代码语言:javascript
复制
implicit def legacyAdapter[TInput,TResult]
  (block: Future[Enumerator[TInput]])
  (implicit translator : (TInput => TResult), 
            executionContext:ExecutionContext,
            timeOut : Duration): List[TResult] = {

  val iter = Iteratee.getChunks[TResult]
  val exhaustFuture = block.flatMap{
    enumy => { enumy.map(i => translator(i) ).run(iter) }
  }

  val r  = Await.result(exhaustFuture , timeOut)
  r
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-13 18:19:44

我们发现公开http://reactivemongo.org/releases/0.10/api/index.html#reactivemongo.api.Cursor的收集方法比收集枚举器的块具有更高的性能。所以在某种意义上,我们通过改变问题来解决我们的问题。

这确实意味着对我们的数据层进行API更改,但是性能的改进允许这样做。

票数 0
EN

Stack Overflow用户

发布于 2014-08-12 20:30:16

Iteratee.getChunks是通过使用枚举器的所有功能构建列表的唯一实用工具,当然,您可以使用Iteratee.fold做同样的事情,但是您将像Iteratee.getChunks使用Iteratee.fold那样重新发明轮子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25251310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档