2014-08-29 10 views
11

Recentemente, ho giocato con scalaz.iteratee e Play iteratee. Penso che iteratee sia una buona idea fornire la modularità invece del vecchio ciclo imperativo mentre lo scopo è usare una funzione come gestore di ogni nuova riga invece di ottenere una stringa [] fuori dal file.Perché abbiamo bisogno di scalaz.stream su iteratee?

Tuttavia, quando guardo la panoramica caratteristica di scalaz.stream, si informa che il disegno di ciò è a sostituire la vecchia implementazione iteratee, ma non menziona perché vogliono sostituirlo.

Qualcuno può spiegarmi se possiamo Streaming, quali caratteristiche e vantaggi possiamo ottenere e anche quale è l'inconveniente di utilizzare iteratee?

risposta

5

Iteratee è molto più difficile da utilizzare rispetto al flusso di scalaz. Anche Scalaz-stream è superiore agli iterate in termini di riuso e composizione del codice.

Infatti gli interi "server" possono ora essere implementati in scalaz-stream invece solo piccoli programmi o pezzi di codice come con pattern Iteratee.

Scalaz-stream offre una sicurezza delle risorse superiore, propagazione del motivo di terminazione, controllo della concorrenza ottimizzato, tonnellate di combinatori ed è facile da estendere.

Ora abbiamo un progetto che è 200K + codice di flusso scalaz ed è complesso multi-utente di server cluster multi-homed, tutti implementati in flusso scalaz.

Se desiderate condividere su ciò che realmente si vuole raggiungere posso essere più "esatta" a benefici e darvi alcuni esempi di codice veloci, che si spera si rivelerà precedenti rivendicazioni :-)

+0

Grazie per la risposta, ma Penso di aver bisogno di più dettagli o esempi di codice per dimostrare il flusso su iteratee. Ad esempio, per quanto mi riguarda in questo momento, "easy to extend" va bene per pattern iteratee. Se voglio definire head, drop o persino map, posso definire un metodo che restituisca un iteratee per farlo. Inoltre, se voglio includere il numero di riga di record del file, posso modificare la classe case Element in Element (x: E, lineNumebr: Int). Per altre cose come "propagazione del motivo di terminazione, concorrenza ben sintonizzata", non sono sicuro. –