Хеш - это набор пар ключ-значение, таких как: "employee" => "salary". Он похож на массив, за исключением того, что индексирование выполняется с помощью произвольных ключей любого типа объекта, а не целочисленного индекса.
Порядок, в котором вы пересекаете хеш по ключу или значению, может показаться произвольным и обычно не будет в порядке вставки. Если вы попытаетесь получить доступ к хешу с ключом, который не существует, метод вернет nil .
Создание хэшей
Как и в случае с массивами, существует множество способов создания хэшей. Вы можете создать пустой хеш с новым методом класса -
months = Hash.new
Вы также можете использовать new для создания хэша со значением по умолчанию, в противном случае просто nil -
months = Hash.new( "month" ) or months = Hash.new "month"
При доступе к любому ключу в хэше, который имеет значение по умолчанию, если ключ или значение не существует, доступ к хешу вернет значение по умолчанию -
Live Demo#!/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 }
Это вернет новый хеш, заполненный данными объектами. Теперь, используя созданный объект, мы можем вызывать любые доступные методы экземпляра. Например -
Live Demo#!/usr/bin/ruby $, = ", " months = Hash.new( "month" ) months = {"1" => "January", "2" => "February"} keys = months.keys puts "#{keys}"
Это даст следующий результат -
["1", "2"]
Ниже приведены публичные методы хеширования (при условии, что хешявляется объектом массива):
Sr.No. | Методы и описание |
---|---|
1 |
хэш == другой_хэш
Проверяет, равны ли два хэша, на основе того, имеют ли они одинаковое количество пар ключ-значение, и соответствуют ли пары ключ-значение соответствующей паре в каждом хэше.
|
2 |
хэш. [ключ]
Используя ключ, ссылается на значение из хэша. Если ключ не найден, возвращает значение по умолчанию.
|
3 |
хеш. [ключ] = значение
Связывает значение, заданное значением, с ключом, заданным ключом .
|
4 |
hash.clear
Удаляет все пары ключ-значение из хэша.
|
5 |
hash.default (ключ = ноль)
Возвращает значение по умолчанию для хэша , nil, если не установлено по умолчанию =. ([] возвращает значение по умолчанию, если ключ не существует в хэше .)
|
6 |
hash.default = obj
Устанавливает значение по умолчанию для хэша .
|
7 |
hash.default_proc
Возвращает блок, если хеш был создан блоком.
|
8 |
hash.delete (ключ) [или]
array.delete (key) {| ключ | блок}
Удаляет пару ключ-значение из хеша по ключу . Если используется блок, возвращает результат блока, если пара не найдена. Сравните delete_if .
|
9 |
hash.delete_if {| ключ, значение | блок}
Удаляет пару ключ-значение из хэша для каждой пары, для которой блок оценивается как true .
|
10 |
hash.each {| ключ, значение | блок}
Итерирует по хешу , вызывая блок один раз для каждого ключа, передавая значение ключа в виде двухэлементного массива.
|
11 |
hash.each_key {| ключ | блок}
Итерирует по хешу , вызывая блок один раз для каждого ключа, передавая ключ в качестве параметра.
|
12 |
hash.each_key {| key_value_array | блок}
Итерирует по хешу , вызывая блок один раз для каждого ключа, передавая ключ и значение в качестве параметров.
|
13 |
hash.each_key {| value | блок}
Итерирует по хешу , вызывая блок один раз для каждого ключа, передавая значение в качестве параметра.
|
14 |
hash.empty?
Проверяет, является ли хеш пустым (не содержит пар ключ-значение), возвращает true или false .
|
15 |
hash.fetch (ключ [, по умолчанию]) [или]
hash.fetch (ключ) {| ключ | блок}
Возвращает значение из хэша для данного ключа . Если ключне может быть найден, и нет других аргументов, он вызывает исключение IndexError ; если задано значение по умолчанию , оно возвращается; если указан необязательный блок, возвращается его результат.
|
16 |
hash.has_key? (ключ) [или] hash.include? (ключ) [или]
hash.key? (ключ) [или] hash.member? (ключ)
Проверяет, присутствует ли данный ключ в хэше, возвращая true или false .
|
17 |
hash.has_value? (значение)
Проверяет, содержит ли хеш заданное значение .
|
18 |
hash.index (значение)
Возвращает ключ для заданного значения в хэше, nil, если не найдено подходящего значения.
|
19 |
hash.indexes (ключи)
Возвращает новый массив, состоящий из значений для данного ключа (ключей). Вставит значение по умолчанию для ключей, которые не найдены. Этот метод устарел. Используйте выбор.
|
20 |
hash.indices (ключи)
Возвращает новый массив, состоящий из значений для данного ключа (ключей). Вставит значение по умолчанию для ключей, которые не найдены. Этот метод устарел. Используйте выбор.
|
21 |
hash.inspect
Возвращает красивую строковую версию хэша.
|
22 |
hash.invert
Создает новый хеш , инвертируя ключи и значения из хеша ; то есть в новом хеше ключи из хэша становятся значениями, а значения становятся ключами.
|
23 |
hash.keys
Создает новый массив с ключами из хэша .
|
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 {| ключ, значение | блок}
Возвращает новый массив, состоящий из пар ключ-значение из хеша, для которого блок возвращает true .
|
32 |
hash.shift
Удаляет пару ключ-значение из хэша , возвращая ее в виде двухэлементного массива.
|
33 |
hash.size
Возвращает размер или длину хэша в виде целого числа.
|
34 |
hash.sort
Преобразует хэш в двумерный массив, содержащий массивы пар ключ-значение, а затем сортирует его как массив.
|
35 |
hash.store (ключ, значение)
Сохраняет пару ключ-значение в хэше .
|
36 |
hash.to_a
Создает двумерный массив из хеша. Каждая пара ключ / значение преобразуется в массив, и все эти массивы хранятся в содержащем массиве.
|
37 |
hash.to_hash
Возвращает хеш (self).
|
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, ...)
Возвращает новый массив, содержащий значения из хэша , которые связаны с данным ключом или ключами.
|
Комментариев нет:
Отправить комментарий