相当于ruby的case/when语句中的`break`?

nTr*_*aum 4 ruby

我正在寻找一个跳过when块执行的语句,类似于breakfor循环.这可能吗?

我想要避免的是一个类似的结构:

case n
  when 1
    if valid
      foo.bar
    end
  when 2
    if valid
      foo.foo
  end
Run Code Online (Sandbox Code Playgroud)

更理想的代码块看起来像:

case n
  when 1
    break unless valid
    foo.bar
  when 2
    break unless valid
    foo.foo
  end
Run Code Online (Sandbox Code Playgroud)

显然,break不起作用.

Thi*_*ilo 6

等效但更简洁:

case n
  when 1
    foo.bar if valid
  when 2
    foo.foo if valid
  end
end
Run Code Online (Sandbox Code Playgroud)

如果条件确实适用于所有情况,您可以事先检查:

if valid
  case n
    when 1
      foo.bar
    when 2
      foo.foo
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果两者都不适合你,那么简短回答:不,break在ruby的案例陈述中没有等价物.

  • 我认为你的意思是`foo.bar如果有效`等等. (2认同)