Ruby-我有我喜欢的代码,但我希望它循环,直到其中一个条件为真



所以我试图理解ruby中的循环函数。我有一大块代码可以做我想做的事情。但我想循环以math变量开头的部分,直到满足其中一个条件。我已经更新了这个,以显示我尝试过的一种方法。到处看(https://launchschool.com/books/ruby/read/loops_iterators)但我不了解这个过程。我真的是个新手。如果你有一个资源,我可以参考,那将是真棒。如果你有一个解决方案,其中包含了为什么它效果更好的提示。这就是我尝试过的。这可能非常糟糕。

puts "Welcome to math.rb!"
puts "Enter a number!"
user = gets.to_i
puts "Enter another number!"
user2 = gets.to_i
puts "What would you like to do with your number?"
math = gets.chomp.downcase
until math == ["add", "subtract", "multiply"]
case math
when "add"
puts user + user2
when "subtract"
puts user - user2
when "multiply"
puts user * user2
else
puts "I don't understand! Type a command like:
-add
-subtract
-multiply"
end

使用loop运算符对代码进行无限循环。将CCD_ 2置于";坏的";返回循环开始的条件。在所有其他情况下,代码会在无限循环的end之前到达最后一个break运算符,从而导致循环退出。如果不需要重用math变量,则可以完全去掉它。这里它只使用一次,所以我删除了它,而是在case语句中直接计算gets.chomp.downcase,而不需要临时变量。

#!/usr/bin/env ruby
puts "Welcome to math.rb!"
puts "Enter a number!"
user = gets.to_i
puts "Enter another number!"
user2 = gets.to_i
puts "What would you like to do with your number?"
loop do
case gets.chomp.downcase
when "add"
puts user + user2
when "subtract"
puts user - user2
when "multiply"
puts user * user2
else
puts "I don't understand! Type a command like:
-add     
-subtract               
-multiply"
next
end
break
end

另请参阅:

loop是Ruby中最常用的创建无限循环的方法:创建无限循环
loop是一种采用block的内核方法,它在无限循环中引入了一个新的局部变量范围。这与while true无限循环不同,后者没有引入新的作用域。因此,while true可能会将变量泄漏到循环之外,这可能是出乎意料的,并在以后导致细微的错误:https://stackoverflow.com/a/45070639/967621

我猜您正在构建类似命令行的工具,对吧?那么,你可以使用Kernel#loop

loop do  # begin of loop
math = gets.chomp.downcase
case math
when "add"
puts user + user2 
when "subtract"
puts user - user2
when "multiply"
puts user * user2
when "exit"
break    # here is your conditional to break from loop
else
puts "I don't understand! Type a command like: n-addn-subtractn-multiply"
end
end

我还没有试过运行它,请告诉我它是否有效。

相关内容

最新更新