Re: [Ruby] CATCH ... THROW поясните

Dmitry Morozhnikov dmiceman на mail.ru
Пн Фев 7 18:06:46 MSK 2005


Hello.

On Monday, February 7, 2005, Ruby usage and development around it wrote:

> Читаю Picaxe/ Но понять смысл и использование не могу. Поясните плиз по
> русски

пример:

a = [1, 2, 3]
b = [:a, :b, :c]

catch(:aaa) do
  a.each do |i|
    b.each do |k|
      puts i.to_s + ' ' + k.to_s
      throw :aaa if i == 2 and k == :b
    end
  end
end

то есть, когда наступает i == 2 и k == :b то происходит выход из
цикла. в схеме это называется escape (или one shoot) continuation.

используется -- да как угодно. в принципе -- эквивалент goto.
запоминаем позицию перехода (сразу после catch) а потом можем на нее
перейти по throw.

-- 
Dmitry Morozhnikov                          mailto:dmiceman на mail.ru



Подробная информация о списке рассылки Ruby