【问题标题】:Stop a while loop when a specific term/word is detected in the string在字符串中检测到特定术语/单词时停止 while 循环
【发布时间】:2015-09-25 17:06:02
【问题描述】:

我想知道如何在 ruby​​ 中创建一个代码,该代码将停止 while 循环,无论写入什么,只要获取字符串包含单词“yes”。

这是我目前所拥有的:

while start!="yes" #make it so it stops the loop even if ex:"Yes, please!!!" is inputed.
  #does stuff
  start=gets.chomp
end

非常感谢。

【问题讨论】:

  • 您所拥有的一切都很好,除了在进入 while 循环之前您必须将 start 分配给除 "yes" 之外的任何值。如果不这样做,将引发以下异常:undefined local variable or method 'start' for main:Object.

标签: ruby string loops while-loop


【解决方案1】:

我认为这会起作用,顺便说一句,untilwhile 相同,但带有否定条件。

input = gets.chomp.downcase

until input.include? 'yes'
  # does stuff
  input = gets.chomp.downcase
end

【讨论】:

    【解决方案2】:

    我建议使用#break,因为它在类似但略有不同的情况下更有用。将#until 或#while 与条件一起使用意味着您愿意循环直到看到中断条件,并且在此之前循环将是无限的。

    在实践中稍微更常见的是迭代文件或数组并希望在满足条件时提前中断,但在数组或文件读取完成时结束循环

    while (line = file.gets) do
      break if line =~ /yes/ # matches if line contains 'yes' anywhere
    end
    

    文件处理有一些变化,会像这里一样一次或逐行读取整个文件,但在任何情况下,如果条件匹配到达文件末尾,循环将退出。如果你真的想要一个一直运行到条件匹配的无限循环,你可以使用同样的方法和 while(1) do ...

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 1970-01-01
      • 2014-07-01
      • 2018-03-20
      • 2022-11-11
      • 1970-01-01
      • 2014-12-29
      • 2020-08-28
      • 1970-01-01
      相关资源
      最近更新 更多