Урок седьмой: Хэш (ассоциативные массивы)

Введение в Ruby [HEXLET]

Что показали в видео

В языке программирования Ruby ассоциативные массивы принято называть ХЭШ.

Пустой хэш создаётся при помощи фигурных скобок. По своей сути, хэш представляет из себя массив парных данных — ключ = значение. В остальном хэш ничем не отличается от простого массива — могут использоваться любые типы данных (как в ключах, так и в значениях), разделяются запятыми.

Урок седьмой: Хэш (ассоциативные массивы)
Пустой ассоциативный массив.

Для доступа к элементу ассоциативного массива (пара) используется обращение по имени:

Урок седьмой: Хэш (ассоциативные массивы)
Пример получения доступа к элементу ассоциативного массива по имени ключа.

Если при обращении к ассоциативному массиву мы используем несуществующий ключ — нам возвращается значение nil.

Что можно делать с хэшами

Наиболее популярные метода работы с хэш — объединение,

Исторические особенности объявления ХЭШа

Традиционно хэши в руби делают символами. При этом двоеточие, с которого начинается запсь ключа почему то ставят в конце его имени. Не знаю по какой причине так исторически сложилось. Но это нужно учитывать.

Урок седьмой: Хэш (ассоциативные массивы)
Традиционное использование записи ключа в ассоциативном массиве, который является символом.

При этом, как вы видите из примера выше — возвращается классическая запись ключа — с двоеточием в начале имени ключа.

обратите внимание на то, как я записываю пару ключ-значение. Если ставлю двоеточие в конце имени ключа, то символы => не пишутся. В таком случае они просто не нужны.

Удаление элемента из хэша

тут подразумевается удаление пары из ассоциативного массива. Для этого мы просто передаем значение ключа и добавляем метод .delete

Урок седьмой: Хэш (ассоциативные массивы)
Пример попытки удаления несуществующего элемента ассоциативного массива= хэша, а так же правильный пример удаления элемента массива.

Как узнать что конкретно означает возвращённое значение Nill

Урок седьмой: Хэш (ассоциативные массивы)
Пример уточняющего запроса в ответ на вернувшийся nill при попытке удаления элемента хэша.

Используя метод .has_key? мы получаем false. Это значит что запрошенный нами элемент массива никогда не находился в рабочем массиве.

Что я изучал дополнительно

Способы объявления хэша

a = {} #=> {}
a = Hash.new #=> {}
a = Hash[] #=> {} 

Принципиальное отличие хэша от простого массива

В хэше, в отличии от массива, ключи должны присваиваться каждому элементу массива ЯВНО. При этом ключом может быть не только целое число, но и строка или символ. Любой тип данных может использоваться для ключа или значения при создании пары.

Что такое nill

Nil — такой же объект, как и сё в языке Ruby. Объект nil является экземпляром особого класса — NilClass, которые обладают булевым значением false. Интересно было узнать, еще и то, что у всех объектов nil  id будет одинаковым. Id объекта nil всегда равен 4:

С какими сложностями столкнулся в практическом задании

После просмотра видео и составления конспекта я успешно и без запинок прошёл ТЕСТ, после чего началась практическая часть урока. Там возникла сложность, так как в видео к уроку не говорилось о том, как можно добавить новый элемент в хэш.

По началу я подумал что все аналогично простому массиву, но я ошибся.

Решение было найдено в интернете. Добавление новой пары в ассоциативный массив осуществляется легко и просто, если вы это изучали ранее:

hash1[:key] = :value

Юрий Ронин