我正在使用ReactiveMongo将应用程序与遗留应用程序集成.
因为,我必须在某些时候维护遗留应用程序接口,我必须阻止和/或将我的代码转换为指定的接口类型.我将该代码简化为下面的示例.
有没有比getChunks更好的方法来使用输出类型为List的所有枚举器?什么是标准做法?
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
}
最佳答案 Iteratee.getChunks是playframework提供的唯一一个通过消耗枚举器的所有块来构建列表的实用程序,你当然可以使用Iteratee.fold做同样的事情,但是你将重新发明轮子,因为Iteratee.getChunks使用Iteratee.fold.