En el marco de colecciones de Scala 2.8, ¿cuál es la diferencia entre view
y toStream
?¿Cuál es la diferencia entre una vista y una secuencia?
Respuesta
En una vista, los elementos se vuelven a calcular cada vez que se accede a ellos. En una secuencia, los elementos se conservan a medida que se evalúan.
Por ejemplo:
val doubled = List(1,2,3,4,5,6,7,8,9,10).view.map(_*2)
println(doubled.mkString(" "))
println(doubled.mkString(" "))
reevaluará el mapa para cada elemento dos veces. Una vez para la primera impresión, y otra vez para la segunda. Por el contrario
val doubled = List(1,2,3,4,5,6,7,8,9,10).toStream.map(_*2)
println(doubled.mkString(" "))
println(doubled.mkString(" "))
solo duplicará los elementos una vez.
Una vista es como una receta para crear una colección. Cuando pides elementos de una vista, lleva a cabo la receta cada vez.
Una transmisión es como un tipo con un montón de tarjetas de borrado en seco. El chico sabe cómo calcular los elementos posteriores de la colección. Puede pedirle el siguiente elemento de la colección y le entrega una tarjeta con el elemento escrito en ella y una cuerda atada desde la tarjeta hasta su dedo (para ayudarlo a recordar). Además, antes de darte una carta, desata la primera cuerda de su dedo y la ata a la nueva.
Si se agarra a la primera tarjeta (es decir, mantiene una referencia a la cabeza de la secuencia) es posible que se quede sin tarjetas (es decir, memoria) cuando solicite el siguiente elemento, pero si no necesita Vuelva a los primeros elementos, puede cortar la cuerda y devolverle las tarjetas innecesarias al tipo y él puede volver a usarlas (después de todo, son de borrado en seco). Así es como una secuencia puede representar una secuencia infinita sin quedarse sin memoria.
Geoff 's answer cubre casi todo, pero quiero añadir que un Stream
es una secuencia List
-como, mientras que cada tipo de colecciones (mapas, juegos, SEQs indexados) tienen puntos de vista.
Tengo una duda. ya que la función es pura. ¿Por qué el compilador no utiliza la transparencia referencial o la memorización? ¿Por qué ver es volver a calcularlo de nuevo? –
- 1. ¿Cuál es la diferencia entre una vista y una vista parcial en ASP.NET MVC?
- 2. ¿Cuál es la diferencia entre una sesión y una cookie?
- 3. ¿cuál es la diferencia entre una clase y una biblioteca?
- 4. ¿Cuál es la diferencia entre una subrutina y una función?
- 5. ¿Cuál es la diferencia entre una Vista y un Controlador de Vista?
- 6. ¿Cuál es la diferencia entre una secuencia y un lector en Java?
- 7. Cuál es la diferencia entre ejecutar una secuencia de comandos shell como ./script.sh y SH script.sh
- 8. ¿Cuál es la diferencia entre una vista respaldada por la capa de CoreAnimation y una vista de alojamiento de capa?
- 9. ¿Cuál es la diferencia entre una referencia __weak y __block?
- 10. ¿Cuál es la diferencia entre un hilo y una fibra?
- 11. ¿Cuál es la diferencia entre un algoritmo y una función?
- 12. ¿Cuál es la diferencia entre una matriz y un objeto?
- 13. ¿Cuál es la diferencia entre una mónada y un cierre?
- 14. ¿Cuál es la diferencia entre una instancia y un objeto?
- 15. ¿Cuál es la diferencia entre un tema y una plantilla?
- 16. ¿Cuál es la diferencia entre declarar y definir una estructura?
- 17. ¿Cuál es la diferencia entre pánico y una afirmación?
- 18. ¿Cuál es la diferencia entre un RoutedCommand y una RoutedUICommand?
- 19. ¿Cuál es la diferencia entre un método y una función?
- 20. ¿Cuál es la diferencia entre importar y extender una clase?
- 21. ¿Cuál es la diferencia entre JTA y una transacción local?
- 22. ¿Cuál es la diferencia entre una heurística y un algoritmo?
- 23. ¿Cuál es la diferencia entre() y [] en una expresión regular?
- 24. ¿Cuál es la diferencia entre una Hashtable y Properties?
- 25. ¿Cuál es la diferencia entre un diccionario y una matriz?
- 26. ¿Cuál es la diferencia entre un procedimiento almacenado y una vista?
- 27. BackboneJs: En una vista cuál es la diferencia entre el: y tagName:
- 28. ¿Cuál es la diferencia entre {0} y ""?
- 29. ¿Cuál es la diferencia entre dict() y {}?
- 30. ¿Cuál es la diferencia entre .ToString (+) y ""
@huynhj lo tienes todo bien. Puedo actualizar la respuesta para que quede más claro –
puede dejar la respuesta tal como está. A veces una metáfora ayuda. En este caso, me confundí. La primera oración lo tenía todo. – huynhjl
El ejemplo de cadena es muy confuso. – ziggystar