В этой статье давайте посмотрим, что такое хэш? и как Ruby перебирает Hash? а также несколько примеров использования хэшей.
О хэше:
Структура данных, сохраняющая объекты по связанным ключам, называется хэшем. Хэш отличается от массива тем, что сохраняет объекты по упорядоченному индексу. Как правило, элементы в хэше называются парами ключ-значение, что дает относительное описание данных.
Если вы хотите получить углубленные знания о Ruby, перейдите по этой ссылке Обучение Ruby On Rails
Как правило, мы можем создать хэш, используя типы данных в качестве значений и символы в качестве ключей. В хеше пары ключ-значение заключены в фигурные скобки { } и разделены запятыми.
Мы можем создавать хэши двумя способами. Первый способ, который является более старым синтаксисом. В этом синтаксисе мы используем символ => для фильтрации значения и ключа.
irb :001 › old_syntax_hash = {: name =› ‘джон’}
=› {: name=›’john’}
Ruby версии 1.9 представил второй способ, то есть новый синтаксис, который проще, чем предыдущий синтаксис.
irb :002 › new_hash = {: name: ‘john’}
=› {: name=›’john’}
Используя два способа, мы получаем одинаковые результаты.
- Мы также можем указать более одной пары ключ-значение в хэшах.
irb :003 › человек = { вес: «60 кг», рост: «5,9 фута»
=›{ вес: «60 кг», рост: «5,9 фута»
- Мы также можем добавить что-нибудь к предыдущему хешу.
irb :004 › person[:hair] = ‘черный’
=› «черный»
irb :005 › человек
=› { :weight=› ‘60 кг’, :height=› ‘5,9 фута’, :hair=›’черный’}
irb :006› человек[:age]=30
=>30
irb :007› человек
=› { :вес=› ‘60 кг’, :рост=› ‘5,9 фута’, :волосы=›’черный’, :возраст=›30
- Мы также можем удалить что-либо из предыдущего хеша.
irb :008 › person.delete(:weight)
=› 60 кг
irb 009 › человек
=› { irb :005 › человек
=› { :weight=› ‘60 кг’, :height=› ‘5,9 фута’, :hair=›’черный’}
- Если вы хотите получить какую-либо информацию из хэша.
irb :010› человек[:возраст]
=>30
- Мы можем получить любую информацию из хэша, а также объединить два хэша.
irb :011 › person.merge!(new_hash)
=›:height=› ‘5,9 фута’, :hair=›’черный’, :age=›30, :name=›’Джон’}
Как выполнять итерацию по хэшам?
В хэшах может быть более одного элемента, поэтому иногда мы можем повторять хэш снова и снова, чтобы что-то сделать с каждым элементом. Перебор хэшей аналогичен перебору массивов, но с небольшим отличием. В хэшах мы снова будем использовать метод «каждый».
Пример:
# iterating_over_hashes.rb
человек = {имя: «Джон», вес: «60 кг», рост: «5,9 фута», волосы: «черные»
person.each do |key, value|
помещает "#{ключ} Джона – это #{значение}"
конец
Мы присвоили переменной значение и ключ в методе «каждый». В приведенном выше примере мы дали ключ переменной «ключ» и значение переменной «значение».
Вывод:
Джона зовут Джон
Вес Джона 60 кг
Рост Джона 5,9 фута
У Джона черные волосы
Что такое распространенные методы хеширования?
Давайте посмотрим на некоторые общие методы, которые мы используем в классе Ruby Hash.
- has_key?: этот метод используется для проверки наличия у хэша определенного ключа. Этот метод возвращает логическое значение.
- Select: этот метод используется для перемещения блока и возврата любых пар ключ-значение, которые проверяются на истинность, если они проходят через блок.
- Fetch. Этот метод используется для перемещения заданного ключа и возвращает значение ключа, если оно есть. Мы также можем дать выбор для возврата, если этого ключа нет.
- to_a: при вызове этого метода он возвращает ваш хеш в виде массива. Это не изменит хэш полностью.
- ключи и значения. Этот метод используется для получения всех значений или ключей из хэша. Он возвращается в виде массива. Вы можете делать такие вещи, как печатать все ключи в хэше, поскольку он дает массив.
Если вы используете более старую версию Ruby, то есть до Ruby 1.9, нет необходимости указывать хэши в определенном порядке. Но если вы используете последнюю версию Ruby 1.9, хэши располагаются в порядке их сохранения.
Концепция пары ключ-значение также хорошо используется и в других технологиях, поэтому лучше иметь представление об этой теме. В этой статье я поделился некоторой информацией о том, что такое хэш? И как перебирать хеш, я поделюсь дополнительной информацией о хешах в следующей статье. Зарегистрируйтесь на бесплатную демо-версию на Онлайн-обучении по Ruby On Rails