2011-06-02 10 views
11

Ruby docs no lo menciones.¿Dir.glob garantiza la orden?

¿Dir.glob("*") garantiza el orden de los archivos que devuelve, o tengo que ordenarlos para estar seguro?

+1

no creo que se ordenan en forma alguna, 'dir.c' en la fuente de Ruby llama' readdir (3) 'para generar la lista , y no veo ninguna referencia a 'sort' en el archivo ... – sarnold

+1

+1. Hice el RDOC más preciso para 1.9.3. –

Respuesta

9

No. No si se está moviendo a través de los sistemas operativos: http://rubyforge.org/tracker/index.php?func=detail&aid=12795&group_id=426&atid=1698

+1

Y, además, creo que nunca hay un pedido interno real en el nivel inferior, por lo que cada salida de la lista de directorios se clasifica previamente de una manera especial; Los discos duros/sistemas de archivos tienen su propia organización de archivos/directorios que, en general, no es alfabética. Eso significa que si necesita un listado ordenado, ¡ordénelo! – asaaki

+1

@asaaki, a veces hay * orden * de bajo nivel. Por ejemplo, NTFS almacena entradas de directorio en orden Unicode en bruto, binario (clasificación ordinal). Vea la publicación de Raymond Chen: ["¿Por qué NTFS y Explorer no están de acuerdo con la clasificación de los nombres de los archivos?"] (Http://blogs.msdn.com/b/oldnewthing/archive/2005/06/17/430194.aspx). También señala que el orden particular utilizado no es apropiado para el usuario, por lo que aún debe ordenar la interfaz de usuario. – efotinis

1

Si los documentos no lo dicen, entonces no hay garantía, y usted necesita ordenarlo usted mismo. Incluso si funciona en tu rubí actual, puede que no en tu próximo.

Cuestiones relacionadas