Ruby替代goto

Ruby替代goto,ruby,Ruby,我怎么能用Ruby做这样的事情 if variable = something do A do B do D elsif variable = something different do A do B do C do D else do A do C do D A = set of loops with if else B = set of loops with if else C = set o

我怎么能用Ruby做这样的事情

if variable = something  
    do A  
    do B  
    do D  
elsif variable = something different
    do A
    do B
    do C
    do D
else
    do A
    do C
    do D

A = set of loops with if else
B = set of loops with if else
C = set of loops with if else
D = final steps
正在寻找一种在Ruby中实现类似此功能的方法。我肯定这个问题在什么地方得到了回答,但我不知道它叫什么。我发现了一些关于允许你使用goto的gem的信息,但我更愿意学习正确的方法(这似乎是个笑话)。我更愿意自己写代码,但如果这有助于回答我的问题,我可以把我的实际代码写出来

如果有人能给我指出正确的方向


另外,如果goto不是一个玩笑,为什么使用它不好呢?

代替goto,只需为a、B等创建函数并使用它们

例如:

def A
  # Lot of code
end
现在,只需编写
A
,就可以
goto
A了

也可以使用switch case,而不是if/else,这样您的代码看起来像

A
case variable
when something
  B
  D
when something else
  B
  C
  D
else
  C
  D
end

这是开关箱的经典用法。这是你用ruby做的。另外,当定义函数
A()、B()、C()、D()
并根据需要调用它们时,我会创建所有do方法并从
内部调用它们。如果需要,将
变量
作为参数传递。几乎可以肯定,应用程序的设计是“错误的”。即使它给出了正确的答案,ruby也不是为拥有大量控制流的大型方法而设计的。它支持多种方法来创建方法,并在调用方法时仔细定义方法(模块、类、继承、包含、lambda/块),而且它没有goto<代码>A
D
始终在此处执行;为什么不编译自己的ruby版本,支持
goto
语句呢…仅供参考:这不是一件明智的事情,但有趣的是,它甚至possible@noMAD. 我认为使用函数最适合我。但使用开关箱是我将要研究的问题。谢谢你的帮助。@tmfah我看你是带着开关箱去的。好,这是正确的方法。