如何跳出双“if”块?

时间:2018-05-15 06:47:11

标签: ruby

我有一些看起来像这样的代码:

if condition A
  if condition A.1
    # do something
  elsif condition A.2
    # do something_else
  else 
    # (want to jump out condition A)
  end 
  # (do something after either A.1 or A.2)
end

如果A.1A.2都不为真,我想跳出双重if块;否则它将尝试在内部if块之后执行代码,这将导致错误。我尝试了nextbreak,但都没有效果。我该怎么办?

5 个答案:

答案 0 :(得分:0)

最好的方法是将这些行推送到新方法中,然后return。问题解决了,使用更短的方法。

答案 1 :(得分:0)

使用2 x (0.2558 + 0.2558³/3 + 0.2558^5/5) = 0.5232 lg 27 ~ 4 + 0.5232 / ln 2 = 4.7548 catch构造如下:

throw

答案 2 :(得分:0)

只需改变你的if结构:

d1 = dict(tuple(df.groupby(3)))

print (d1[39])
       0   1   2   3     4
0   00B2   0 -67  39  1.13
1   00B2  85 -72  39  1.13
5   00B2  91 -67  39  1.13
26  00B2  21 -71  39  1.13
27  00B2  22 -71  39  1.13
29  00B2  24 -71  39  1.13

由于性能原因,这可能是不可能的,但在大多数情况下都应该有效。或者,您可以将 if condition A if condition A.1 do something elsif condition A.2 do something_else end if A.1 || A.2 (do something after either A.1 or A.2) end end 移动到单独的函数,并从两种情况中调用它。

答案 3 :(得分:0)

最佳解决方案是切换案例

答案 4 :(得分:0)

我觉得有一种更简洁的方法可以做到这一点,改变条件更像红宝石:

if condition_a && (condition_a_1 || condition_a_2)
  do_something if condition_a_1
  do_something_else if condition a_2
  do_something_after_a_1_or_a_2
end

然后有do_somethings的函数