如何修复Ruby Yes / No-Style循环?

时间:2011-09-23 21:11:18

标签: ruby while-loop

我已经使用 n-times 写了这个方法,用于使用 while循环进行用户输入。 这个想法非常简单和常见,如果条件为真,则重复while循环, 问题是它不起作用......

def play_again?
  flag = true
  while flag
    print "Would you like to play again? [y/n]: "
    response = gets.chomp
    case response
      when 'y'
        Game.play
      when 'n'
        flag = false
    end
  end
  flag
end

play_again?

目前它只会成功重复一次然后退出,而不是继续循环,你能告诉我出了什么问题吗? (对不起,如果这是一个n00b问题,毕竟我是一个红宝石n00b)

谢谢。

1 个答案:

答案 0 :(得分:14)

可能出现的问题:

  • 检查Game.play
  • 资本/无资本的答案? - > String#upcase或String#downcase
  • 隐藏空间(答案之前/之后) - > String#strip而不是String#chomp

您也可以使用正则表达式(示例N)或答案列表(是)来检查答案:

def play_again?
  while true
    print "Would you like to play again? [y/n]: "
    case gets.strip
      when 'Y', 'y', 'j', 'J', 'yes' #j for Germans (Ja)
        puts 'I play' # Game.play
      when /\A[nN]o?\Z/ #n or no
        break 
    end
  end
end

play_again?