Назад к вопросам
Intern
105
questionbank

Что такое Array.new в Ruby?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Array.new - это метод класса Array для создания новых объектов массива. Он имеет несколько перегрузок.

  1. Без аргументов: Создает пустой массив.
    # Создает []
    Array.new
    
  2. С одним аргументом (размер): Создает массив заданного размера, заполненный nil.
    # Создает [nil, nil, nil]
    Array.new(3)
    
  3. С двумя аргументами (размер, значение по умолчанию): Создает массив заданного размера, инициализированный указанным значением. Важно: если значение является изменяемым объектом (например, другой массив или хэш), все элементы будут ссылаться на один и тот же объект.
    # Создает [1, 1, 1]
    Array.new(3, 1)
    
    # Осторожно: создает [[], [], []], но все внутренние массивы - это один и тот же объект
    arr = Array.new(3, [])
    arr[0] << 1
    # arr теперь [[1], [1], [1]]
    
  4. С одним аргументом (размер) и блоком: Создает массив заданного размера, где каждый элемент инициализируется результатом выполнения блока. Индекс элемента передается в блок как аргумент. Этот подход позволяет создать массив с уникальными изменяемыми объектами.
    # Создает [0, 1, 4] (индекс в квадрате)
    Array.new(3) { |i| i * i }
    
    # Создает [[], [], []] с уникальными внутренними массивами
    arr = Array.new(3) { [] }
    arr[0] << 1
    # arr теперь [[1], [], []]