0

我正在遍历一个大的文件目录:

Find.find('/some/path/to/directory/root') do |path|
  # ...do stuff with files…
end

什么是限制这个可枚举组的大小500(或以其他方式突破)的好方法,例如,Rails.env.development?

我可以使用计数器,但什么是“Ruby 方式”?

4

2 回答 2

2

这是一种方式:

Find.find('/some/path/to/directory/root').first(500).each do |path|
  # do something
end
于 2013-09-30T22:57:07.633 回答
1

Find.find枚举文件;换句话说,它想遍历所有这些。您可以使用以下方法附加索引值:

Find.find(ENV['HOME']).with_index(1) do |path, i|
  puts path
  break if i > 10
end

puts 'done'

并使用它来跟踪您处理了多少。

如果您想“全部完成”:

limit = <some number>

do_em_all = (limit == 0)
Find.find(ENV['HOME']).with_index(1) do |path, i|
  puts path
  break unless (do_em_all || i <= limit)
end

puts 'done'

如果limit0,您将处理所有内容。如果是> 0你会循环limit时间。

您还可以使用Dir.entriesor Dir.globwhich 将返回一个条目数组,您可以根据需要对其进行分割。

Enumerableeach_slice在那个时候可能很有用。

于 2013-09-30T22:57:17.790 回答