Поток завершается без зацикливания и печатает дополнительный символ - PullRequest
1 голос
/ 09 ноября 2008

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)

1 Ответ

2 голосов
/ 09 ноября 2008

Вам нужно использовать

search.split("\n")

вместо

search.split('\n')

Одинарные кавычки не позволяют интерпретировать его как фактический перевод строки. Вот почему цикл завершается - длина массива, не делимого вообще, равна 1. В конце вашей первой итерации a (равное 0) становится + = 1, что является длиной нерасщепленный массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...