2

如何打破双重声明?

a = 1
b = 2
c = 3

if a == 1
    if b == 2
        c = 5
        d = 6
        break
    end
end

puts c
puts d

输出

loop.rb:9: Invalid break
loop.rb: compile error (SyntaxError)
4

1 回答 1

7

你不能从内部中断if,你只能从内部循环和块中断。

如果您要问的是如何从两个嵌套循环中中断,您可以catch结合使用throw— 这些与其他语言中的 try 和 catch 不同。

catch(:stop) do
  while some_cond
    while other_cond
      throw :stop
    end
  end
end

当然,您总是可以设置一个标志或类似的东西来告诉外部循环它也应该中断。

于 2012-06-13T11:33:29.667 回答