Как правило, это невозможно, потому что это не очень хорошая практика. Изменение коллекции в середине цикла может привести к неожиданным результатам.
Скажем Array#each_with_index
установите переменную self
в блоке на массив, по которому вы выполняли итерацию. Вместо получения массива [1, 2, 3, 4, 5, 4, 8]
этот цикл теперь становится бесконечным:
[1, 2, 3, 4, 5].each_with_index do |number, index|
self << number * 2 if number % 2 == 0
end
Конечно, ничто не мешает вам делать это в любом случае с локальными переменными, но, явно предоставив доступ к массиву в цикле, Ruby сделает подобные ошибки намного более распространенными.
Я не предполагаю, что это то, что вы делаете в вашем примере. Я просто констатирую то, что я представлял себе как дизайн языка.