我正在遍历一个大的文件目录:
Find.find('/some/path/to/directory/root') do |path|
# ...do stuff with files…
end
什么是限制这个可枚举组的大小500
(或以其他方式突破)的好方法,例如,Rails.env.development?
?
我可以使用计数器,但什么是“Ruby 方式”?
我正在遍历一个大的文件目录:
Find.find('/some/path/to/directory/root') do |path|
# ...do stuff with files…
end
什么是限制这个可枚举组的大小500
(或以其他方式突破)的好方法,例如,Rails.env.development?
?
我可以使用计数器,但什么是“Ruby 方式”?
这是一种方式:
Find.find('/some/path/to/directory/root').first(500).each do |path|
# do something
end
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'
如果limit
是0
,您将处理所有内容。如果是> 0
你会循环limit
时间。
您还可以使用Dir.entries
or Dir.glob
which 将返回一个条目数组,您可以根据需要对其进行分割。
Enumerableeach_slice
在那个时候可能很有用。