1
searchterms.rb流量没有终止循环和打印多余的字符
search = "1|butter+salted|Butter salt|Butter|Túrós csusza|Margarine|Potato
2|butter+whipped|Shea butter|Butter|Pastry bag|Cream bun|Butter cream
3|butter+oil+anhydrous|Ultralight backpacking|Odell\'s|Ghee|Fragrance extraction|Perfume
4|cheese+blue|Blue cheese|Shropshire Blue cheese|Buxton Blue cheese|Danish Blue cheese|Blue cheese dressing
5|cheese+brick|Brick cheese|Oaxaca cheese|List of American cheeses|Herve cheese|Trappista cheese
.
.
.
search = search.split('\n')
catalog = String.new
a = 0; until a == search.length
line = search[a].split('|')
id = line.first
term = line[1]
puts id + "|" + term
puts " 1 #{line[2].nil? ? '' : line[2]}"
puts " 2 #{line[3].nil? ? '' : line[3]}"
puts " 3 #{line[4].nil? ? '' : line[4]}"
puts " 4 #{line[5].nil? ? '' : line[5]}"
puts " 5 #{line[6].nil? ? '' : line[6]}"
choice = gets
choice = choice.chomp.to_i
catalog = "#{id}|#{term}|#{line[choice]}\n"
%x[echo "#{catalog}" >> updated_terms]
a += 1
end
$ ruby searchterms.rb
1|butter+salted
1 Butter salt
2 Butter
3 Túrós csusza
4 Margarine
5 Potato
2 # I don't know why this figure is printed.
2
$
我如何得到这个工作?我必须为每个食物选择最相关的术语。
我也得上设置任何其他号码,即可开始奇怪的错误:
searchterms.rb:7525:
line = search[a].split('|')
private method `split' called for nil:NilClass (NoMethodError)
您也正在为您的循环使用非标准成语 - 考虑使用`(0 ... search.length).each do | a |`或`0.upto(search.length - 1)do | a |`并删除你的'a + = 1`行。 – rampion 2008-11-09 22:14:52