Мне интересно вырваться из внешнего и внутреннего блоков, если исключение выбрасывается во внутренний блок ruby. Код может выглядеть примерно так:Вырыв из рубинового внутреннего блока с использованием catch/throw
catch "ExitBlock" do
foo.each_with_index do |el, idx|
bar = ... // do more stuff,
bar.each_with_index do |el1, idx1|
if some_bad_stuff
throw "ExitBlock"
end
end
end
end
если some_bad_stuff верно, то следует выйти как наружный блок и внутренний блок, а не только внутренний блок. приведенный выше код дает мне ArgumentError однако с:
ArgumentError: uncaught throw "ExitBlock"
Что я делаю неправильно?
согласился! Я использовал струны, и это сломало бы меня. Я должен посмотреть на источник. с символами он работает отлично. – randombits
Какую версию Ruby вы используете? 'throw'ing и' catch'ing произвольные объекты были добавлены только в 1.9.0, перед этим вы могли бы просто «бросать» и «улавливать» 'Символ'. –
Я использую ruby 1.9.3p125 – megas