Ruby代替goto

Ruby substitute for goto

我怎么能用红宝石做这种事?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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中完成类似任务的方法。我肯定这个问题在某个地方得到了解答,但我不知道该怎么称呼。我发现了一些关于gem的信息,可以让你使用goto,但我更愿意学习正确的方法来做到这一点(而且这似乎是一个笑话)。我宁愿自己写代码,但如果这有助于回答我的问题,我可以把我的实际代码写出来。

如果有人能指点我正确的方向。

另外,如果goto不是一个笑话,为什么不可以使用?


而不是只为a、b等创建函数并使用它们

例如:

1
2
3
def A
  # Lot of code
end

现在您只需编写A就可以使用gotoa了。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
A
case variable
when something
  B
  D
when something else
  B
  C
  D
else
  C
  D
end


这是开关盒的经典用法。这是你用红宝石做的。另外,我会制作所有的do方法,并从when内部调用它们。