刚刚开始在泰特先生的“七周七大语言”中学习ruby一章。
对于第1天的奖励问题,我将生成一个“随机”数字,从输入中读取用户的猜测,并将该猜测与我的“随机”数字进行比较,然后提示用户使用begin循环继续猜测。但是,不管用户输入的字符串值是什么,循环似乎都会终止。

# file : day1_bonus.rb
# Seven Languages In Seven Weeks
#
# Guess a random number!

again = "y"

begin
  print "Enter a number between 0 and 9: "
  number = gets.to_i
  randNum = rand(10)

  if number == randNum
    puts 'You guessed correctly!'
  else
    puts 'You guessed incorrectly.'
  end

  print "Play again? (y/n): "
  again = gets
  again.chomp   # remove carriage return
end while again == "y"

输出:
Enter a number between 0 and 9: 3
You guessed incorrectly.
Play again? (y/n): y
nil

最佳答案

chomp有两个版本。规则chomp和bangchomp!。区别在于:正则返回修改过的字符串(并且不返回源代码),而bang版本在原地修改原始字符串。
所以,在你的代码中,你选择了马车返回并丢弃了这项工作。要么这样做

again = again.chomp

或者这个
again.chomp!

08-07 12:21