2014-08-29 188 views
11

最近,我一直在玩scalaz.iteratee和Play的iteratee。我认为迭代器提供模块化是一个好主意,而不是循环中的旧命令 - 目标是使用函数作为每个新行的处理程序,而不是将字符串[]移出文件。为什么我们需要scalaz.stream迭代?

但是,当我看着scalaz.stream的功能概述,它提到的,该设计是以取代旧的iteratee实施,但它并没有提到为什么他们想取代它。

有人可以向我解释,如果我们可以流,我们可以获得什么功能和好处,以及什么是使用迭代器的缺点?

回答

5

与scalaz-stream相比,Iteratee要难得多。在代码重用和合成方面,斯卡拉斯流优于迭代。

事实上,整个“服务器”现在可以在scalaz-stream中实现,而不是像小程序或类似于Iteratee模式的代码段。

Scalaz-stream为您提供卓越的资源安全性,终止原因传播,微调的并发控制,大量的组合器并且易于扩展。

我们现在的项目是200K +斯卡拉斯流代码,并且是复杂的多用户多宿主集群服务器,全部在斯卡拉流中实现。

如果你想你想实现我可以在福利更“精确”,并给你一些简单的代码样本真正分享,希望能证明上述:-)你的答案索赔

+0

谢谢,但我想我需要更多的细节或代码示例来演示iteratee上的流。例如,就我现在所关心的问题而言,“易于扩展”适用于迭代模式。如果我想定义head,drop或者map,我可以定义一个返回迭代器的方法来完成这个任务。另外,如果我想包含文件的记录行号,我可以将元素案例类更改为元素(x:E,lineNumebr:Int)。对于“终止理由传播,微调并发”等其他内容,我不确定。 – 2014-09-01 06:08:35