I just descubrió que existen tales iteradores en Java.
¿Scala tiene iteradores con métodos 'set' y 'remove' para iterar (y modificar) colecciones mutables como array?
Si no existe dicho iterador, ¿hay una buena razón para eso?Iteradores para colecciones mutables en Scala?
Respuesta
Scala no tiene actualmente dicho iterador.
Sospecho que no lo hace porque
Tales iteradores no son en general (es decir, que sólo son utilizables con colecciones mutables) pero consumen espacio de nombres.
Debido a que pueden convertirse rápidamente en confuso para pensar en conjunto con las operaciones perezoso como
takeWhile
(¿Siempre es obvio lox.takeWhile(_<5).add(5)
debe hacer? Por un lado, el orden de las operaciones se parece como usted debe tomar primero, y luego añadir ; pero, por otro,take
es perezosa mientrasadd
menudo se pueden implementar de inmediato, por lo que la combinación de esta manera sería peligroso ingenuamente)Tales iteradores son sólo una buena idea algorítmica con un conjunto muy especializado de colecciones (básicamente. solo listas y árboles vinculados; añadir y eliminar es una tontería para usar en matrices de todos modos, y no tiene mucho sentido en los conjuntos).
Cuando surge un conflicto intrínseco entre la generalidad y la velocidad, la biblioteca de colecciones de Scala suele favorecer la generalidad. Este tipo de iterador te hace pensar en las colecciones de una manera más particular (es decir, más ligada a la estructura de datos subyacente). Podría imaginarse una biblioteca que tomara decisiones diferentes, pero para una biblioteca de máxima utilidad (y aún bastante completa), la filosofía de la biblioteca de colecciones Scala es probablemente la mejor manera de hacerlo.
Muy buenos argumentos, gracias. No veo ningún peligro con takeWhile. Es como x = x + 1. ¿Tal vez algunas colecciones deberían proporcionar iteradores especializados mezclados de varios rasgos? O bien, mebye, algún tipo de referencia debería devolverse como aquí: http://stackoverflow.com/questions/2799128/how-to-get-ponter-reference-semantics-in-scala/2799208#2799208 –
hilo sobre el mismo tema en comp.lang.scala.user
- 1. Cómo usar colecciones mutables en Scala
- 2. Colecciones de Java con objetos mutables
- 3. scala 2.8 inconsistencia de colecciones?
- 4. clases de iteradores perezosos en Scala?
- 5. Scala: Contiene en conjuntos mutables e inmutables
- 6. Micro-punto de referencia que compara las colecciones mutables e inmutables de Scala con las colecciones java.util.concurrent. *
- 7. mutable vs. inmutable en las colecciones de Scala
- 8. ¿Cómo combinar 2 iteradores en Scala?
- 9. La deforestación en colecciones Scala
- 10. Incoherencias de Colecciones Scala
- 11. Transposición de colecciones arbitrarias de colecciones en Scala
- 12. Scala interbloqueo con colecciones paralelas
- 13. Java/Scala (profundidad) colecciones interoperabilidad
- 14. Clases de casos de Scala en colecciones
- 15. ¿Explicar la sincronización de colecciones cuando se usan iteradores?
- 16. Colecciones paralelas en Scala 2.9 y actores
- 17. Iteraciones sobre colecciones de Java en Scala
- 18. scala: cómo evitar las mutables dentro de try catch blocks
- 19. ¿Qué tipo usar para almacenar una tabla de datos mutables en la memoria en Scala?
- 20. colecciones paralelas de scala grado de paralelismo
- 21. Conjuntos mutables en NSManagedObjects?
- 22. Cadenas mutables en Java
- 23. Cadenas mutables en Python
- 24. Operando en las colecciones de Scala de manera genérica
- 25. ¿Qué operaciones en las colecciones paralelas de Scala están paralelizadas?
- 26. Campos mutables en Clojure deftype?
- 27. iteradores bidireccionales en unordered_map?
- 28. objetos mutables y hashCode
- 29. Actualizando las colecciones de Scala de forma segura
- 30. ¿Por qué los ListMaps mutables e inmutables tienen diferentes pedidos en Scala?
Debería copiar (o paráfrasis) la respuesta (s) que obtuvo en la lista de correo aquí (para la posteridad). –
@Randall. Ok, di el enlace para maximizar la utilidad. –