2014-08-29 234 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