При инициализации массива с помощью Array.new(size, &block) или Array.new(size) { ... }, блок используется для динамического определения значения каждого элемента. Без блока, если указан только размер, все элементы инициализируются значением nil. Если указать начальное значение, все элементы будут ссылаться на один и тот же объект.
Преимущества использования блока:
Пример:
ruby
Блок принимает аргумент — индекс текущего элемента массива, что позволяет создавать элементы с зависимостью от их положения:
ruby
Использование блока при инициализации массива — это гибкий способ создания массива с произвольными, часто уникальными, начальными значениями для каждого элемента.