Ruby
Теория: Блоки внутри функции
Полный доступ к материалам
Написать в Ruby функцию, которая принимает блок, не так страшно, как
может показаться на первый взгляд. В самом простом случае нужно знать
про одно ключевое слово – yield. Именно с его помощью происходит вызов
блока:
Как видно из примера выше, мы не управляем блоком явно. yield
автоматически получает доступ к блоку и вызывает его. Количество вызовов
yield может быть любым. Каждый вызов работает, как независимый вызов
блока:
yield можно воспринимать как вызов блока, который во многом ведет себя
как обычная функция. Например, если блок возвращает результат, то его же
вернет и yield.
Если блок содержит параметры, то они передаются в блок через yield,
как через вызов функции:
И, собирая все вместе, так выглядит реализация map() внутри:

