2014-08-29 16 views
11

Son zamanlarda, scalaz.iteratee ve Play'in iteratee ile oynuyordum. Yinelemenin döngü sırasında eski zorunluluk yerine modülerlik sağlaması için harika bir fikir olduğunu düşünüyorum - amaç, dosyadan dizgeyi almak yerine her yeni satıcının işleyicisi olarak bir işlev kullanmaktır. Ben scalaz.stream özelliği genel baktığınızdaNeden stelaz.stream iteratee üzerinde ihtiyacımız var?

Ancak, bu tasarımı eski iteratee uygulanmasını yerini alacak olduğunu bahseder, ancak neden bunu değiştirmek istiyor bahsetmiyor.

Aktarım yapıp yapamayacağımızı, iteratei kullanmanın dezavantajının neye mal olabileceğini bana açıklayabilir mi?

cevap

5

Yinelemenin, scalaz akışıyla karşılaştırmak için çalışmak çok daha zordur. Scalaz akışı da kod tekrar kullanım ve kompozisyon açısından iteratlara üstündür. Aslında, tüm "sunucular" artık sadece küçük programlar ya da Iteratee deseni gibi bir kod parçası yerine scalaz akışında uygulanabilir.

Scalaz-stream size üstün kaynak güvenliği, sonlandırma nedeni yayılımı, ince ayarlı eşzamanlılık kontrolü, kompanzatör tonu verir ve uzatılması kolaydır.

Artık, 200K + scalaz akış kodu olan ve scalaz akışında uygulanan karmaşık çok kullanıcılı çok bağlantılı kümelenmiş sunucu (lar) olan bir projemiz var. Eğer ben faydaları "kesin" fazla olabilir elde etmek ve size bazı hızlı kod örnekleri vermek istiyorum gerçekten ne paylaşmak istiyorsanız

, o umarım Cevabınız için :-) yukarıdaki iddiaları

+0

Teşekkür kanıtlamak, ancak Iteratee üzerinde akışı göstermek için daha fazla ayrıntıya veya kod örneğine ihtiyacım var. Örneğin, şu ana kadar endişeleniyorum, "Uzatması kolay" iteratee desen için iyidir. Eğer kafa tanımlamak, bırakmak veya hatta haritalamak istiyorsam, bunu yapmak için bir yineleme döndüren bir yöntem tanımlayabilirim. Ayrıca, dosyanın kayıt satırıNumarasını eklemek istiyorsanız, Element vaka sınıfını Element'e (x: E, lineNumebr: Int) değiştirebilirim. "Sonlandırma nedeni yayılımı, ince ayarlı eşzamanlılık" gibi diğer şeyler için emin değilim. –

İlgili konular