Ruby替代goto
我怎么能用Ruby做这样的事情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
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我看你是带着开关箱去的。好,这是正确的方法。