Ruby для начинающих: Массивы и хеши

Что такое массивы?

Переменные хранят одно значение (например, 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.

Что будем искать? Например,программа