Недавно я купил книгу Семь языков за семь недель и читал главу о 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
И как бы вы вызывали этот код, чтобы продемонстрировать, как он работает? Спасибо!