【问题标题】:ruby script freezes when calling class method调用类方法时ruby脚本冻结
【发布时间】:2015-03-09 15:29:35
【问题描述】:

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

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)

【问题讨论】:

  • 你的代码风格不好。请正确地做意图。
  • 你有什么问题?

标签: ruby class loops methods gets


【解决方案1】:

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

使用@@ 变量真的很奇怪——在 ruby​​ 编程中很少使用它。

【讨论】:

  • @@listofDrawnTeams.uniq!虽然摆脱了重复,所以我认为我没有这个问题。@@ 类变量是我用于类的变量
  • 但是如果你的原始样本有重复,它可能永远不会填满新的数组。如果您尝试洗牌,请尝试stackoverflow.com/questions/1816378/…
猜你喜欢
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
相关资源
最近更新 更多