我必须处理Ruby中一些笨拙的文件。给定一个特定的ID,我知道与ID相关的数据将在不超过一个的文件中,但我不确定是哪一个。它也可能不存在,这是我需要处理的错误状态。所以我有一个这样的循环:
files = ['a','b','c','d']
files.each do |filename|
File.open(filename,'r') do |f|
break unless contains_id(myid)
do_stuff
end
end
所以我有两个问题:
一旦找到包含我正在寻找的数据的文件,什么是摆脱循环的正确方法?
如何处理数据不在任何文件中的情况?
这是我提出的但感觉粗糙:
files = ['a','b','c','d']
found = false
files.each do |filename|
break if found
File.open(filename,'r') do |f|
break unless contains_id(myid)
found = true
do_stuff
end
end
do_error_stuff unless found
答案 0 :(得分:3)
您可以使用Enumerable#find
代替#each
来查找{0}中块返回true的第一个条目,或者files
。所以这看起来像:
nil