3.2 KiB
3.2 KiB
status, type, tags, created, updated, title, source
| status | type | tags | created | updated | title | source | ||
|---|---|---|---|---|---|---|---|---|
| seed | knowledge |
|
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