当我以Sublime文本运行此代码时,它进入无限循环,而不是提示用户“输入内容”。
print 'Enter something'
input_user = gets.strip
if(input_user == 'something')
puts 'You are smart'
else
puts 'You are not'
end
gets
之外,还有没有其他有效的方式可以接受红宝石中的用户输入(不使用第三方库)?答案 0 :(得分:1)
Sublime不允许输入数据,因此似乎是一个无限循环。
另外,您也看不到Enter something
,因为输出“已在流中排队”。您需要刷新输出才能看到它。查看以下主题:How to print stdout immediately?
因此,要查看Sublime中打印的第一行,请在STDOUT.flush
(print
)之后添加puts
。
puts 'Enter something'
STDOUT.flush
input_user = gets.strip
现在,如果您是从Sublime(CMD + B)构建的,则可以看到第一行已打印,但是由于Sublime无法拾取输入,因此执行仍然挂起。
要进行正确的测试在终端上运行,即使没有冲洗也可以正常运行。
答案 1 :(得分:0)
没有明显的原因可以使此代码锁定到无限循环中。我只是为了在ruby 2.4.1p111
下踢球而运行它。代码按照描述的期望运行,没有无限循环。
答案 2 :(得分:0)
这不是无限循环。它只是在等待输入数据。
这是CLI应用程序要求用户输入的基本流程:
并且还使用#gets
方法来捕获,存储和操作该输入。