Me preguntaba si la instrucción foreach en Perl itera los elementos en una matriz en orden constante? Es decir, ¿obtengo resultados diferentes si uso foreach varias veces en la misma matriz o lista?¿La instrucción foreach itera en orden o puede ser orden aleatorio?
5
A
Respuesta
9
Sí, los elementos en una declaración foreach
se repiten en orden.
Su pregunta podría surgir de la confusión sobre iterar sobre los elementos de un hash:
my %hash = ('a' => 1, 'b' => 2, 'c' => 3);
foreach my $key (keys %hash) { print $key } ; # output is "cab"
Pero el orden aparentemente aleatorio es un artefacto de cómo los datos se almacenan en una tabla hash de Perl (datos en un hash de Perl la tabla no está ordenada). Es la declaración keys
que está "cambiando" el orden de la tabla hash, no el foreach
.
1
Si no cambia la lista de vez en cuando, siempre estará en un orden constante.
0
El razonamiento de por qué bucle foreach hash de ordenación de Perl es aparentemente al azar se encuentra en el documento perlsec, vinculados here
Cuestiones relacionadas
- 1. php orden aleatorio de un foreach
- 2. ¿Puede Python establecer la ausencia de orden ser considerado orden aleatorio?
- 3. Devuelve filas en orden aleatorio
- 4. matriz multidimensional en orden aleatorio
- 5. foreach% dopar% - ¿garantía por orden de resultados?
- 6. MapReduce método de orden aleatorio
- 7. linq: ordenar por orden aleatorio
- 8. Orden aleatorio de filas Matlab
- 9. Reorganizar NSArray/MSMutableArray en orden aleatorio
- 10. orden aleatorio de imágenes en php
- 11. Métodos de llamada en orden aleatorio (C#)
- 12. ¿Cómo hacer un orden controlado "aleatorio"?
- 13. Algoritmo para generar orden aleatorio de elementos
- 14. Esquema XSD que permite el orden aleatorio
- 15. Visitar los puntos en un triángulo en un orden aleatorio
- 16. instrucción "If" - ¿Orden de validación de objetos?
- 17. Internet Explorer muestra atributos XML en orden aleatorio
- 18. ¿El bucle foreach en C# garantiza un orden de evaluación?
- 19. ¿Puedo hacer que NUnit ejecute pruebas en orden aleatorio?
- 20. Ruby - Ejecutando pruebas en orden aleatorio con rastrillo
- 21. orden PHP orden por fecha?
- 22. Orden de clasificación personalizado: cómo no duplicar la instrucción Case
- 23. ¿Está garantizado que la declaración foreach de .NET itere una colección en el mismo orden en el que se creó?
- 24. PHP: instrucción Limit foreach()?
- 25. ¿Dir.glob garantiza la orden?
- 26. Instrucción IF en ORDEN BY Cláusula de una instrucción SELECT en un SQL Server Procedimiento almacenado
- 27. Perl, orden de pedido
- 28. orden lexicográfico en Java
- 29. ¿Hay algún significado en el orden de la tabla en la instrucción de ensamblado sql
- 30. NSArray en orden descendente
Sólo para ser pedante, 'keys' no cambia el orden de la tabla hash - si llama teclas' 'repetidamente en el mismo hash sin insertar o eliminar ninguna tecla, devolverá las claves en el mismo orden cada vez. El orden se cambia por el hecho de almacenar los datos en un hash en primer lugar. Los hash almacenan los datos en un orden que es determinista, pero impredecible (por lo que es efectivamente desordenado para la mayoría de los propósitos prácticos). –
Simplemente agregando un enlace a una pregunta relacionada: [¿Perl garantiza devolver las claves hash ordenadas consistentemente? - Desbordamiento de pila] (http://stackoverflow.com/questions/1256502/is-perl-guaranteed-to-return-consistently-ordered-hash-keys) – sdaau