在 Ruby 路径名 .children 中排序
Ordering in Ruby Pathname .children
Pathname 的 .children
方法返回的文件系统实体的顺序似乎是任意的,或者至少不是按字母顺序排列的。
有没有办法让这些通过文件系统按字母顺序返回,而不是在返回的数组上调用 .sort
?
Pathname 的 children
实际上在做:
def children(with_directory=true)
with_directory = false if @path == '.'
result = []
Dir.foreach(@path) {|e|
next if e == '.' || e == '..'
if with_directory
result << self.class.new(File.join(@path, e))
else
result << self.class.new(e)
end
}
result
end
Dir.foreach
调用 OS 并迭代传入的目录。没有规定告诉 OS 按特定顺序排序。
"What is the "directory order" of files in a directory (used by ls -U
)?" 您可能会感兴趣。
Pathname 的 .children
方法返回的文件系统实体的顺序似乎是任意的,或者至少不是按字母顺序排列的。
有没有办法让这些通过文件系统按字母顺序返回,而不是在返回的数组上调用 .sort
?
Pathname 的 children
实际上在做:
def children(with_directory=true)
with_directory = false if @path == '.'
result = []
Dir.foreach(@path) {|e|
next if e == '.' || e == '..'
if with_directory
result << self.class.new(File.join(@path, e))
else
result << self.class.new(e)
end
}
result
end
Dir.foreach
调用 OS 并迭代传入的目录。没有规定告诉 OS 按特定顺序排序。
"What is the "directory order" of files in a directory (used by ls -U
)?" 您可能会感兴趣。