while循环语句中的布尔值而不是“ while true do”不起作用

时间:2019-01-14 06:35:34

标签: ruby

我试图使用设置为布尔值true的变量来创建循环。我期望如果用户输入false时该值将更改为"exit",并且由于while语句"isTrue == true"不再是{{1} }。

true

但是它似乎没有用,只是不断循环。为什么我的代码无法正常工作?

4 个答案:

答案 0 :(得分:2)

使用gets.chomp而不是gets删除尾部“ \ n”,它将起作用。因此,您将不会处理来自gets的“退出\ n”

答案 1 :(得分:0)

[1] pry(main)> input = gets
exit
=> "exit\n"
[2] pry(main)>

这是因为gets输入中将包含\n。您需要处理它。

赞:

[2] pry(main)> input.chomp
=> "exit"

通常ppl这样写:

[3] pry(main)> input = gets.chomp
exit
=> "exit"

答案 2 :(得分:0)

rstrip在这种情况下会为您提供帮助。

由于您按了返回按钮,因此您输入的内容实际上并不完全是“退出”。

以下代码将起作用。

isTrue = true

  while isTrue == true do
    input = gets
    if input.rstrip == "exit" then    # exitと入力されたら
      isTrue = false           # プログラムを終了
    else
      puts "LOOPING..."
    end
  end

puts "ENDING NOW"

引荐-Standard Docs

答案 3 :(得分:0)

您的程序可以变得更紧凑:

while gets.chomp != 'exit' do
  puts 'LOOPING...'
end

puts 'ENDING NOW'

该程序的版本与您的程序完全相同,但是更小,更快。

祝您在Ruby学习中好运!