ruby脚本在调用类方法时冻结

时间:2015-01-11 21:23:14

标签: ruby class loops methods gets

我有这个程序,我从命令行运行,在这个方法后冻结。这个方法有效,但最后冻结,我留下一个不断闪烁的光标。

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)

1 个答案:

答案 0 :(得分:0)

在您的方法secondfixer中,如果您有重复的团队,您的until循环可能永远不会完成。

使用@@变量非常奇怪 - 它很少用于ruby编程。