Что такое массивы?
Переменные хранят одно значение (например, nam = 4). Массивы позволяют хранить множество значений разных типов данных. Например:
[578, "Привет", false, 3.14]
Создание массивов
Массив создаётся с помощью квадратных скобок [], внутри которых элементы перечисляются через запятую:
arr = [5, 7, "строка", true]
puts arr # Выведет: [5, 7, "строка", true]
Пустой массив:
empty_array = []
Работа с элементами массива
Доступ к элементам осуществляется по индексам, начиная с нуля.
Например, для names = ["Джордж", "Боб", "Алекс"]:
- names[0] вернёт «Джордж»
- names[1] вернёт «Боб»
- names[2] вернёт «Алекс»
Обращение к несуществующему индексу (например, names[3]) вернёт nil.
Индексы могут быть отрицательными, считая с конца:
- names[-1] вернёт «Алекс»
- names[-2] вернёт «Боб»
Диапазон элементов:
puts names[1, 2] # Выведет: ["Боб", "Алекс"]
Изменение и добавление элементов
Значение элемента можно изменить:
names[0] = "Диана"
puts names # Выведет: ["Диана", "Боб", "Алекс"]
Добавление элементов в массив с использованием индексов:
list = []
list[0] = 29
list[1] = 90
puts list # Выведет: [29, nil, 90]
Ruby создаст промежуточные nil значения, если индексы не непрерывны.
Методы массивов
Массивы имеют множество методов:
- .length — возвращает количество элементов.
- .reverse — возвращает перевернутый массив.
- .include?(element) — проверяет наличие элемента.
Примеры:
puts list.length # Выведет: 2
puts list.reverse # Выведет: [90, 29]
puts list.include?(29) # Выведет: true
puts list.include?(100) # Выведет: false
Ассоциативные массивы (хеши)
Ассоциативные массивы используют ключи (строки, символы или числа) вместо числовых индексов. Создаются с помощью фигурных скобок {}:
countries = {
"Россия" => "ru",
101 => "ua",
:ukraine => "ukr"
}
puts countries["Россия"] # Выведет: ru
puts countries[101] # Выведет: ua
puts countries[:ukraine] # Выведет: ukr
Их также называют хэшами.
В Ruby есть два основных типа массивов: обычные массивы с числовыми индексами и ассоциативные массивы (хеши) с произвольными ключами. Знание этих структур данных необходимо для эффективной работы с Ruby.