скрипт ruby ​​зависает при вызове метода класса

У меня есть эта программа, которую я запускаю из командной строки, которая зависает после этого метода. Этот метод работает, но в конце он зависает, и у меня остается постоянно мигающий курсор.

def self.chooseteams(numberofteams)
  i=1
  while i<numberofteams
    puts "choose a team"
    team=gets.chomp
    @@c<<team
    i+=1
  end
end

Затем программа зависает и не может вызвать следующий метод, который есть. Он предназначен для выполнения своей функции, и когда условие выполняется, переходить к следующему методу. Я предполагаю, что он попадает в бесконечный цикл, однако я не вижу!

def self.secondfixer(numberofteams)
  until @@listofDrawnTeams.length==numberofteams do 
    firstPick = @@c.sample
    @@listofDrawnTeams<<firstPick
    @@listofDrawnTeams.uniq!
  end
end

Все методы вызываются в конце программы.

Genfix.gener(64)
Genfix.fixer(64)
Genfix.chooseteams(32)
Genfix.secondfixer(32)
Genfix.fixer(32)

person user3739465    schedule 11.01.2015    source источник
comment
У вас плохой стиль кода. Пожалуйста, сделайте намерение правильно.   -  person sawa    schedule 12.01.2015
comment
Какой у Вас вопрос?   -  person sawa    schedule 12.01.2015


Ответы (1)


В вашем методе secondfixer ваш until цикл может никогда не завершиться, если у вас есть повторяющиеся команды.

Использование переменных @@ действительно странно - оно редко используется в программировании на Ruby.

person DGM    schedule 11.01.2015
comment
@@ listofDrawnTeams.uniq! избавляется от дубликатов, поэтому я не думаю, что у меня есть эта проблема. Переменная @@ class - это то, что я использую для классов - person user3739465; 12.01.2015
comment
Но если в ваших исходных образцах есть дубликаты, они могут никогда не заполнить новый массив. Если вы пытаетесь перетасовать массив, попробуйте stackoverflow.com/questions/1816378/ - person DGM; 12.01.2015