Files
SecondBrain/90 Library/06 Programming/Ruby - массивы.md
T
2026-05-18 21:11:52 +03:00

3.2 KiB

status, type, tags, created, updated, title, source
status type tags created updated title source
seed knowledge
programming
ruby
2026-05-17 2026-05-17 Ruby - массивы Ruby - массивы

Ruby — массивы

Массив в Ruby — экземпляр класса Array. Поскольку массивы являются объектами со своими методами, работа со списками данных упрощается.

Связанные темы: Ruby - основы языка

Создание массива

a1 = [1, 2, 3]                   # литерал
a2 = %w{word1 word2}              # массив строк без кавычек
a3 = ['start', nil, 5, [1, 2]]   # разнотипные элементы, вложенный массив

a4 = Array.new                   # пустой массив
a5 = Array.new(3)                # [nil, nil, nil]
a6 = Array.new(5, "Test")        # ["Test", "Test", ...]
a7 = Array.new(5) { |i| i * i }  # [0, 1, 4, 9, 16]
a8 = Array.[](1, 'a', /^A/)      # через метод класса

Ruby поддерживает многомерные массивы с элементами разной размерности.

Индексация

a[0]   # первый элемент
a[-1]  # последний элемент
a[-2]  # предпоследний

Размер

a.size    # количество элементов
a.length  # синоним size

Поиск элементов

a.include?(obj)  # => true / false
a.index(obj)     # индекс первого вхождения или nil

Добавление элементов

a << 4          # в конец
a += [5]        # объединение
a.push(6)       # в конец (синоним: append)
a.unshift(0)    # в начало (сдвигает остальные вправо)
a.insert(2, x)  # вставить перед элементом с индексом 2

Удаление элементов

a.delete(obj)              # удалить все вхождения obj
a.delete_at(index)         # удалить по индексу
a.delete_if { |x| block }  # удалить все, подходящие под условие
a.shift                    # удалить и вернуть первый элемент
a.pop                      # удалить и вернуть последний элемент

Срезы

a[1..3]              # диапазон индексов
a[1, 3]              # начиная с индекса 1, длиной 3
a.values_at(0, 2, 4) # элементы по перечисленным индексам или диапазонам
a.first(n)           # первые n элементов
a.last(n)            # последние n элементов

Полезные методы

a.flatten    # развернуть многомерный массив в одномерный
a.flatten!   # то же, но изменяет сам массив

a.sample     # случайный элемент
a.sample(n)  # n случайных элементов

a.select { |x| block }  # массив элементов, для которых block == true