2012-06-13 3 views
2

Как сломать двойное заявление?ruby ​​break double statement

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) 
+1

Что вы хотите достичь, выполнив это? – Flexoid

+1

Тот же вопрос уже задан здесь: http://stackoverflow.com/questions/1352120/how-to-break-outer-cycle-in-ruby –

ответ

7

Вы не можете вырваться из внутри if, вы можете разбить только внутри петель и блоков.

Если вы спрашиваете, как выйти из двух вложенных циклов, вы можете использовать catch в сочетании с throw -это не то же самое, что попробовать и поймать на других языках.

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

Конечно, вы всегда можете просто установить флаг или некоторые такие, чтобы указать внешнему циклу, что он тоже должен сломаться.