¿Está foreach
by-definition garantizado para iterar la colección sujeto (si define orden) secuencialmente desde el primer hasta el último elemento (a menos que se interrumpa accidentalmente)? ¿No hay ningún conmutador de optimización del compilador que pueda frenarlo (barajar la secuencia) o planea hacer que el foreach
ordinario sea paralelo en futuras versiones?¿Está garantizada la definición por definición de foreach para iterar secuencialmente la colección sujeto en Scala?
Respuesta
Foreach se garantiza que sea secuencial para las colecciones secuenciales (es decir, la jerarquía normal, o para cualquier cosa transformada por .seq
). La parte paralela de la biblioteca de colecciones (que se obtiene de una colección estándar a través de .par
o mediante el uso explícito de clases desde collection.parallel
) está prácticamente garantizada no para evaluar en orden. Si quieres ser agnóstico, puedes usar el conjunto de rasgos GenX
(por ejemplo, GenSeq
); estos no proporcionan ninguna garantía en el orden de ejecución o que el trabajo se realizará en paralelo.
Para complementar la respuesta de Rex, foreach
en GenTraversableOnce
solo garantiza que se iterarán todos los elementos, a menos que lo interrumpa. Rasgos más bajos en la cadena de jerarquía pueden ofrecer garantías adicionales, por ejemplo:
TraversableOnce
y descendientes garantizar que sólo un elemento se itera a través a la vez (no garantizada porGenTraversableOnce
!).Seq
y los descendientes garantizan que los elementos se recorrerán en el orden en que se mantienen en la colección.
Y ya que lo preguntas acerca paralelo foreach
...
scala> (1 to 10).par foreach println
4
6
1
3
2
7
5
8
9
10
- 1. Evitar la ambigüedad definición implícita en Scala
- 2. ¿Dónde está la definición de `struct ap_conf_vector_t`?
- 3. Scala: Definición de casos de prueba basados en la carpeta
- 4. definición de macro dentro de la definición de estructura
- 5. Definición formal de continuación de Scala
- 6. Scala dándome "inicio ilegal de definición"
- 7. La Definición de Lenguajes Ordinarios
- 8. Scala sin obedecer la definición no abstracta con una var
- 9. ¿Qué es la clase actual para la definición de sintaxis scala de tipo estructural?
- 10. ¿Dónde está la definición de tipo de documento HTML5?
- 11. Definición de main() en C
- 12. La verdadera definición de inmutabilidad?
- 13. Definición de DataTrigger para StackPanel
- 14. 'objeto' no contiene una definición para 'X'
- 15. Scala - ambigua referencia a la definición sobrecargada - con varargs
- 16. T no contiene la definición para rowKey
- 17. Definición estándar de la lista
- 18. ¿Por qué la definición de Array.map en Scala es "arrojar nueva Error()"
- 19. Contexto estático en la definición de enumeración
- 20. pure-specifier en la definición de función
- 21. Notepad ++ ir a la definición
- 22. en línea en la definición y declaración
- 23. ¿Está garantizada la solicitud de Ajax para enviar cookies?
- 24. ¿dónde está la definición de extern char ** environ?
- 25. condicional definición de la variable en JSF
- 26. fuera de la definición de la muestra
- 27. Cambiando la definición de bigotes en geom_boxplot
- 28. Definición de DEVELOPER_MODE para StrictMode
- 29. Ir a la definición en concreto tipo
- 30. definición de conjuntos en ocaml