Лучшее руководство по Рубин хэш (Hash) в 2024 году. В этом руководстве вы можете изучить Создание хэш,Hash встроенный метод,
Хеш (Hash) похож на "ключ" => "значение" такого набора пар ключ-значение. Подобно хеш, но оно не ограничивается использованием номера индексов.
Хэш-индекс (или "ключ") может быть практически любой объект.
Хэш-массив Хотя похожи, но есть очень важное различие: Hash элементы в произвольном порядке. Если порядок важен, то вы должны использовать массив.
Как и массив, множество различных способов для создания хэш. Вы можете создать пустой хэш с помощьюновогометода класса:
months = Hash.new
Вы можете также использоватьновыйхэш создается со значениями по умолчанию, без хэш - значение по умолчанию равнонулю:
months = Hash.new( "month" ) 或 months = Hash.new "month"
При доступе к хэш со значениями по умолчанию в любом ключе, если ключ или значение не существует, возвращается к значению хеш-доступа по умолчанию:
#!/usr/bin/ruby months = Hash.new( "month" ) puts "#{months[0]}" puts "#{months[72]}"
Запуск в приведенном выше примере выход:
month month
#!/usr/bin/ruby H = Hash["a" => 100, "b" => 200] puts "#{H['a']}" puts "#{H['b']}"
Запуск в приведенном выше примере выход:
100 200
Вы можете использовать любой объект Ruby, как ключ или значение, или может использовать массив, как показано на примере:
[1,"jan"] => "January"
Если вам нужно вызвать метод Hash, вам необходимо создать экземпляр объекта Hash. Вот способ, чтобы создать экземпляр объекта Hash:
Hash[[key =>|, value]* ] or Hash.new [or] Hash.new(obj) [or] Hash.new { |hash, key| block }
Это вернет данный объект, заполненный новой хэш. Теперь, используя объекты создаются, мы можем назвать любой из доступных методов. Например:
#!/usr/bin/ruby $, = ", " months = Hash.new( "month" ) months = {"1" => "January", "2" => "February"} keys = months.keys puts "#{keys}"
Запуск в приведенном выше примере выход:
["1", "2"]
Ниже приведены общий метод хэш (предполагая , чтохэш- объект Hash):
Нет. | Метод и описание |
---|---|
1 | Хэш == other_hash Проверьте, правильно ли оба имеют одинаковое значение хеш-ключа для числа пар ключ-значение совпадают друг с другом, чтобы определить, являются ли два хэши равны. |
2 | хэш. [ключ] Используйте ключевые опорные значения из хэша. Если ключ не найден, а затем вернуться к значениям по умолчанию. |
3 | хэш. [ключ] = значение Значение, заданное значениеключа, связанного с данным ключом. |
4 | hash.clear Удалить все ключи из хэша. |
5 | hash.default (ключ = ноль) Возвращает значение по умолчаниюхэш,если не устанавливается по умолчанию = возвращает ноль. (Если ключ не существует вхэш,а затем [] возвращает значение по умолчанию.) |
6 | hash.default = OBJ Установите значения по умолчанию дляхэш. |
7 | hash.default_proc Еслихэшсозданный блок, блок возвращается. |
8 | hash.delete (ключ) [или] array.delete (ключ) {| ключ | блок} Удалить изхэш- ключа с помощью парыключей.Если блок и не найти совпадающие пары ключ-значение, результаты блока возвращается. Сравните это сdelete_if. |
9 | hash.delete_if {| ключ, значение | блок } Этовернодля каждого блока из блока, удалите ключ изхэша. |
10 | hash.each {| ключ, значение | блок } Траверсахэш,вызывается один раз для каждогоключевогоблока, передать ключ-значение как массив из двух элементов. |
11 | hash.each_key {| ключ | блок} Траверсахэш,вызывается один раз для каждогоключевогоблока, передатьключв качестве параметра. |
12 | hash.each_key {| key_value_array | блок} Траверсахэш,вызывается один раз для каждогоключевогоблока, передатьключизначениев качестве аргументов. |
13 | hash.each_value {| значение | блок} Траверсахэш,вызывается один раз для каждогоключевогоблока, передается в качествезначения параметра. |
14 | hash.empty? Проверьте, пуст ли хеш (не содержит пары ключ-значение), и возвращаетистинуилиложь. |
15 | hash.fetch (клавиша [, по умолчанию])[или] hash.fetch (ключ) {| ключ | блок} Возвращаемое значение изхэшачерез заданныйключ.Если вы не можете найтиключ,и не обеспечивают дополнительные параметры, броситьIndexErrorисключение, если придефолте,возвращает значение поумолчанию,если необязательный блок, блок результата возвращается. |
16 | hash.has_key? (ключ) [или] hash.include? (ключ) [или] hash.key? (ключ) [или] hash.member? (ключ) Проверьте , если данныйключсуществует в хэш, возвращаетистинуилиложь. |
17 | hash.has_value? (значение) Проверьте , содержит ли хэш заданноезначение. |
18 | hash.index (значение) Возвращает для данногозначенияхэш -ключа,если совпадение не найдено возвращаетNIL. |
19 | hash.indexes (ключи) Он возвращает новый массив по значению данного ключа компонентов. Не удается найти ключ, чтобы вставить значение по умолчанию. Этот метод является устаревшим, пожалуйста, используйте выбрать. |
20 | hash.indices (ключи) Он возвращает новый массив по значению данного ключа компонентов. Не удается найти ключ, чтобы вставить значение по умолчанию. Этот метод является устаревшим, пожалуйста, используйте выбрать. |
21 | hash.inspect Назад Версия для печати строки хэш. |
22 | hash.invert Создайте новыйхэш,хэш - инверсииключейизначений.Другими словами, новыйхэш,хэш - значение становится ключом, значение станет ключевым фактором. |
23 | hash.keys Создать новый массив с ключомхэш./ Td> |
24 | hash.length Она возвращает целое размерхэшили длину. |
25 | hash.merge (other_hash) [или] hash.merge (other_hash) {| ключ, oldval, newval | блок} Возвращает новый хэш,хэшсодержит содержание иother_hashпереписывает хэш - ключ сother_hashс парой ключей дубликатов. |
26 | hash.merge! (other_hash) [или] hash.merge (other_hash)! {| ключ , oldval, newval | блок} И сливаться то же самое, но на самом деле хэш изменился. |
27 | hash.rehash Повторно установитьхэшна основе текущего значения каждогоключа.Если вставить значение изменилось, то процесс будет повторно индексироватьсяхэш. |
28 | hash.reject {| ключ, значение | блок } Как и вслучаекаждого ключевогоблока, чтобы создать новыйхэш. |
29 | hash.reject! {| ключ, значение | блок} Иотвергаютто же самое, но на самом деле хэш изменился. |
30 | hash.replace (other_hash) Заменить содержимоехэшother_hash контента. |
31 | hash.select {| ключ, значение | блок } Возвращает новый массив,блоквозвращает значениеИСТИНАзначенияхэш- ключ в парах. |
32 | hash.shift Удалить изхешпары ключей и отправляет значение ключа возвращается как массив из двух элементов. |
33 | hash.size Она возвращает целоехэшразмера или длины. |
34 | hash.sort Хэшпреобразуется в двумерный массив , содержащий массив ключ-значение , а затем сортируются. |
35 | hash.store (ключ, значение) Хэш- хранятся в паре ключ-значение. |
36 | hash.to_a Создайте двумерный массив из хэша. Каждый ключ-значение пары в массив, все эти массивы хранятся в массиве. |
37 | hash.to_hash Возвращаетхэш (само). |
38 | hash.to_s Хэшпреобразуется в массив, то массив преобразуется в строку. |
39 | hash.update (other_hash) [или] hash.update (other_hash) {| ключ, oldval, newval | блок} Возвращает новый хэш,хэшсодержит содержание иother_hashпереписываетхэш- ключ сother_hashс парой ключей дубликатов. |
40 | hash.value? (значение) Проверьте , содержит лихэшзаданноезначение. |
41 | hash.values Он возвращает новый массив , содержащий все значенияхэш. |
42 | hash.values_at (OBJ, ru.) Он возвращает новый массив , содержащийхэш- значение , связанное с заданным ключом. |