Ruby循环中断不一致?

时间:2013-10-17 00:09:04

标签: ruby loops conditional break

这有效:

#Loop naming accounts====================

num = 0 #<--Generic counting variable

loop do

    print ("\nEnter account name or press 'q': > ")

    names[num] = gets.chomp

        if names[num] == "q"
            break   
        end

    puts ("The account name is #{names[num]}.")

    num += 1

end

这里显而易见的问题是我不想要&#34; q&#34;成为其中一个帐户。

这不起作用:

#Loop naming accounts====================

num = 0 #<--Generic counting variable

loop do

    print ("\nWould you like to add an account? [1 - yes] [2 - no]: > ")

    varr = nil

    varr = gets.chomp.to_i

    if varr == 2
        break
    end

    names[num] = gets.chomp

    puts ("The account name is #{names[num]}.")

    num += 1

end

这会将我的终端发送到完全黑屏。问题:

  1. 为什么第一个例子用于突破循环,但第二个例子不会?

  2. 为什么第二个例子奇怪地打破了一个完全空白的屏幕,而不是抛出错误等?

  3. 如何正确执行此操作?

  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 如果你退出2,第二个例子可以正常工作。
  2. 问题是您要求用户先输入是否要添加帐户,然后您希望第二个输入是帐户的名称,但是您不向用户打印任何内容,试试这段代码:

  3. num = 0 #<--Generic counting variable
    names = [] # Collection for names
    
    loop do
      print ("\nWould you like to add an account? [1 - yes] [2 - no]: > ")
      varr = gets.chomp.to_i
      break if varr == 2
    
      puts "Enter name"
      names[num] = gets.chomp
      puts ("The account name is #{names[num]}.")
    
      num += 1
    end