tutorial software renault fungicida examples constructora blanquerna scala

software - scala tutorial



¿Diferencia entre Iterator y Stream en Scala? (2)

Parece que tanto Iterator como Stream son flojos y te permiten seguir devolviendo elementos al contenido de tu corazón. ¿Cuál es la diferencia entre los dos?


Ambos son construcciones para acceder a un elemento actual, que tiene una lista aún desconocida de los elementos restantes (la cola perezosa).

Iterator es una construcción imperativa que solo puede atravesar una vez.

Stream es una construcción funcional. En teoría, puede atravesarlo varias veces (y como otros mencionaron, no volverá a calcular las partes ya calculadas), pero en la práctica porque los flujos son infinitos o muy grandes (es por eso que lo usa en primer lugar), sosteniendo la referencia al flujo completo no tiene mucho sentido (se encuentra con Out Of Memory bastante fácil).

Por lo general, es más seguro para la mente evitar las Stream simples. Las alternativas usan EphemeralStream of Scalaz, que se auto-olvida partes no reconocidas usando referencias débiles, o usando Iteratees (ver también here ) o algo similar .


memoises secuencias y Iterador no. Puede atravesar el mismo Stream varias veces y obtener el mismo resultado cada vez. Iterador, por otro lado, solo puede atravesarse una vez.