Как вы используете блоки Ruby для условного выполнения чего-либо?

Недавно я купил книгу Семь языков за семь недель и читал главу о Ruby. В разделе, посвященном блокам (стр. 40), приведен пример кода, который иллюстрирует использование блоков с целью условного выполнения чего-либо:

in_case_of_emergency do
  use_credit_card
  panic
end

def in_case_of_emergency
  yield if emergency?
end

Этот код не имеет для меня особого смысла, и книга не имеет особого смысла. дать много объяснений. Мне было интересно, не мог бы один из вас, гуру Ruby, помочь мне разобраться в этом.

Как у вас может быть и блок, и функция с одинаковыми именами? Как бы вы дали определение «чрезвычайной ситуации»? Я даже не могу создать блок в IRB без его жалоб:

NoMethodError: undefined method `in_case_of_emergency' for main:Object
    from (irb):1
    from :0

И как бы вы вызывали этот код, чтобы продемонстрировать, как он работает? Спасибо!

5
задан Steve Johnson 2 May 2011 в 05:07
поделиться