Ruby 是否有一个“a”字;“回到顶端”;用红宝石?

Ruby 是否有一个“a”字;“回到顶端”;用红宝石?,ruby,Ruby,我对ruby编程很在行。我的问题是在ruby中是否有类似锚或goto的东西,这样我就可以在Ifs中创建循环。。。有这样的事吗 示例: anchorX gets variable if variable == "option one" puts "you choose right" else puts "you choose wrong! DO IT AGAIN!" go to anchorX 你为什么要用goto来处理这么琐碎的事情 使用while循环。ruby的while语法是:

我对ruby编程很在行。我的问题是在ruby中是否有类似锚或goto的东西,这样我就可以在Ifs中创建循环。。。有这样的事吗

示例:

anchorX
gets variable
if variable == "option one"
   puts "you choose right"
else
   puts "you choose wrong! DO IT AGAIN!"
go to anchorX

你为什么要用
goto
来处理这么琐碎的事情

使用
while
循环。ruby的
while
语法是:

while [condition] do
   (put your code here)
end
例如:

gets variable
while variable != "option one" do
    puts "you choose wrong!"
    gets variable
puts "you choose right"

不,Ruby没有
goto
。请尝试循环:

loop {
    input = gets.chomp
    if input == "option one"
        puts "you choose right"
        break
    else
        puts "you choose wrong! DO IT AGAIN!"
    end
}
或者,另一种方法(可以说可读性稍高):


除了循环语句外,还可以使用
retry
语句重复整个开始/结束块


+1表示“直到”。是的,但是
until
版本需要复制
get
。我更喜欢
loop
版本(虽然我会使用
do
end
而不是卷发)。我的想法是不要在纯文本游戏中重复我自己的动作。。。例如如果玩家忘记了什么,他可以回去重做步骤。举个例子:有一张带钥匙和门的桌子。如果用户写入go to door,则会有一个逻辑测试varmovement==“pick key”,如果。。。elsif如果“打开门”显示“门已锁定,您是否需要钥匙”,并将用户移回程序的开头
input = gets.chomp
until input == "option one"
   puts "you choose wrong! DO IT AGAIN!"
   input = gets.chomp
end
puts "you choose right"
begin
    input = gets.chomp
    if input == "option one"
        puts "you choose right"
    else
        puts "you choose wrong! DO IT AGAIN!"
        raise
    end
rescue 
    retry
end