ruby - 为什么我没有成功摆脱这个 Ruby 循环?

标签 ruby loops break

我正在通过编写一个简单的二十一点游戏来练习 Ruby。当用户被问到他们是想坚持还是扭曲时,我的程序似乎坚持他们选择了扭曲,即使他们明确触发了应该是中断的地方。我在这里抽象了问题:

choice = ""
loop do
     print "Press any key to twist. Enter s to stick: "
     choice = gets
     break if choice == "s"
     puts "twist"
end

print "stick"

知道是什么导致了一段非常简单的代码出现问题吗?无论我做什么,我都无法“坚持”打印。

最佳答案

当您调用 gets 时,您正在存储通过按 Return 而输入的输入以及 \n 换行符。避免这种情况的惯例是使用 gets.chomp ( String#chomp ) 从输入中去除空格。

choice = ""
loop do
     print "Press any key to twist. Enter s to stick: "
     choice = gets.chomp
     break if choice == "s"
     puts "twist"
end

print "stick"

这在 User Input section at ruby-doc.org. 中得到解决

irb 控制台中,您可以通过简单地执行以下操作来测试它:

irb > input = gets
abcde
 => "abcde\n" 
irb > input = gets.chomp
abcde
 => "abcde"  

关于ruby - 为什么我没有成功摆脱这个 Ruby 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820721/

相关文章:

python - 对于列表 : del n 中的 n

c++ - 如何打破for循环?

ruby-on-rails - Amazon s3/Cloudfront Ruby on rails 视频流

ruby-on-rails - Rails 4 在保存时创建关联对象

python - 从另一个类添加到 python 中的 for 循环

c - 如何退出 C 中的外循环(不使用++)?

java - 强制 try block 在两者之间中断的最佳方法是什么?

ruby-on-rails - 使用 CanCan 和 Twitter Bootstrap 设计的 Rails 教程

ruby-on-rails - PG::UndefinedTable:错误:缺少 FROM 子句

javascript - 使用 $.each XML Javascript 时,$(this).getAttribute 不是函数