Хеш - это набор пар ключ-значение, таких как: "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, ...)
Возвращает новый массив, содержащий значения из хэша , которые связаны с данным ключом или ключами.
|
Комментариев нет:
Отправить комментарий