问题 Dir.glob是否保证订单?


Ruby文档 不要提这个。

是否 Dir.glob("*") 保证它返回的文件的顺序,还是我需要自己排序以确定?


1060
2018-06-02 21:45


起源

我不认为它以任何方式排序, dir.c 在Ruby源调用中 readdir(3) 生成列表,我没有看到任何引用 sort 在文件中...... - sarnold
+1。我为1.9.3制作了更精确的RDoc。 - Marc-André Lafortune


答案:


不。如果您正在跨越操作系统,请不要: http://rubyforge.org/tracker/index.php?func=detail&aid=12795&group_id=426&atid=1698


9
2018-06-02 22:24



另外我认为,在较低级别中从来没有真正的内部排序,因此每个目录列表输出都以特殊方式预先排序; harddisks / filesystems有自己的文件/目录组织,通常不是按字母顺序排列的。这意味着:如果您需要排序列表 - >排序它! - asaaki
@asaaki,有时在那里 是 低级订购。例如,NTFS以原始的二进制Unicode顺序(序号排序)存储目录条目。参见Raymond Chen的帖子: “为什么NTFS和Explorer不同意文件名排序?”。他还指出,所使用的特定排序并不适合用户,因此您仍需要对UI进行排序。 - efotinis


如果文档没有说出来,则无法保证,您需要自己对其进行排序。即使它适用于您当前的红宝石,也可能不适合您的红宝石。


1
2018-06-02 22:07