English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Хэш (Hash) - это набор пар "ключ" => "значение". Хэш подобен массиву, только его индексы не ограничиваются числами.
Индекс хэша (или "ключ") может быть почти любым объектом.
Хэш, хотя и ähnlich wie Arrays, hat einen wichtigen Unterschied: Die Elemente eines Hash haben keine bestimmte Reihenfolge. Wenn die Reihenfolge wichtig ist, verwenden Sie besser ein Array.
Как и массивы, хэши можно создавать различными способами. Вы можете через new Метод класса создает пустой хэш:
months = Hash.new
Вы также можете использовать new Создание хеша с значением по умолчанию, хеш без значения по умолчанию является nil:
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 является Hash объектом):
номер | метод & описание |
---|---|
1 | hash == other_hash проверить, имеют ли два хеша одинаковое количество ключей-значений и совпадают ли они彼此, чтобы определить, равны ли два хеша. |
2 | hash[key] использовать ключ, чтобы ссылаться на значение из хеша. Если ключ не найден, возвращается значение по умолчанию. |
3 | hash[key]=value Преобразовать value преданному значению с ключ ассоциировать с ключом, переданным. |
4 | hash.clear удалить все ключи-значения из хеша. |
5 | hash.default(key = nil) Возвращает hash значение по умолчанию, если его не установлено через default=, то возвращается nil.(Если ключ в hash в ней отсутствует, то [] возвращает значение по умолчанию.) |
6 | hash.default = obj }} hash устанавливает значение по умолчанию. |
7 | hash.default_proc если hash если создан с помощью блока, то возвращает блок. |
8 | hash.delete(key) [или] array.delete(key) { |key| block } через ключ От hash из которого удалить ключ-значение. Если используется блок и не найдено соответствующее ключ-значение, то возвращает результат блока. Его сравнивают с delete_if 进行比较. |
9 | hash.delete_if { |key,value| block } block для true каждого блока, от hash из которого удалить ключ-значение. |
10 | hash.each { |key,value| block } пройти hash, для каждого ключ вызывается block один раз, передается key-value как двухэлементный массив. |
11 | hash.each_key { |key| block } пройти hash, для каждого ключ вызывается block один раз, передается ключ в качестве параметра. |
12 | hash.each_key { |key_value_array| block } пройти hash, для каждого ключ вызывается block один раз, передается ключ и value в качестве параметра. |
13 | hash.each_value { |value| block } пройти hash, для каждого ключ вызывается block один раз, передается value в качестве параметра. |
14 | hash.empty? проверяет, пуст ли хэш (не содержит пар ключ-значение), возвращает true или false. |
15 | hash.fetch(key [, default] ) [или] hash.fetch(key) { | key | block } через заданный ключ От hash возвращает значение. Если не найдено ключи не предоставлены другие параметры, то выбрасывается IndexError исключение; если указано defaultвозвращает defaultесли указан опциональный block, то возвращает результат block. |
16 | hash.has_key?(key) [или] hash.include?(key) [или] hash.key?(key) [или] hash.member?(key) проверяет заданное ключ существует ли в хэше, возвращает true или false. |
17 | hash.has_value?(value) проверяет, содержит ли хэш заданное value. |
18 | hash.index(value) для заданного value возвращает из хэша ключвозвращает, если не найдено соответствующее значение nil. |
19 | hash.indexes(keys) Возвращает новый массив, состоящий из значений данных ключей. Не найденные ключи вставляются с помощью значения по умолчанию. Этот метод устарел, пожалуйста, используйте select. |
20 | hash.indices(keys) Возвращает новый массив, состоящий из значений данных ключей. Не найденные ключи вставляются с помощью значения по умолчанию. Этот метод устарел, пожалуйста, используйте select. |
21 | hash.inspect Возвращает версию строки хэша. |
22 | hash.invert Создание нового hashвозврат hash становятся keys и values. То есть, в новом хешеhash ключи станут значениями, а значения станут ключами. |
23 | hash.keys Создание нового массива, содержащего hash ключей. |
24 | hash.length Возвращает в виде целого числа hash размера или длины. |
25 | hash.merge(other_hash) [или] hash.merge(other_hash) { |key, oldval, newval| block } Возвращает новый хеш, содержащий hash и other_hash содержимое, переписывая hash с other_hash Со значениями ключей, повторяющимися. |
26 | hash.merge!(other_hash) [или] hash.merge!(other_hash) { |key, oldval, newval| block } равно merge, но hash действительно изменяется. |
27 | hash.rehash на основе каждого ключ текущую hash. Если после вставки значение изменилось, этот метод заново индексирует hash. |
28 | hash.reject { |key, value| block } Подобно delete_if, но действует на копию хэша. Равно hsh.dup.delete_if. |
29 | hash.reject! { |key, value| block } равно delete_if, но если изменений не произошло, возвращает nil. |
30 | hash.replace(other_hash) Преобразовать hash Содержимое other_hash содержимого. |
31 | hash.select { |key, value| block } Возвращает новый массив, состоящий из block Возвращает true в hash состоит из пар ключ-значение. |
32 | hash.shift От hash Удаление одной пары ключ-значение из |
33 | hash.size Возвращает в виде целого числа hash в size или length. |
34 | hash.sort Преобразовать hash Преобразование в двумерный массив, содержащий массивы ключ-значение, а затем сортировка. |
35 | hash.store(key, value) Хранение hash одна из пар ключ-значение. |
36 | hash.to_a Создание двумерного массива из hash. Каждая пара ключ-значение преобразуется в массив, все эти массивы хранятся в одном массиве. |
37 | hash.to_hash Возвращает hash(self). |
38 | hash.to_s Преобразовать hash Преобразовать в массив, а затем преобразовать этот массив в строку. |
39 | hash.update(other_hash) [or] hash.update(other_hash) {|key, oldval, newval| block} Возвращает новый хеш, содержащий hash и other_hash содержимым, переписать hash с other_hash Со значениями ключей, повторяющимися. |
40 | hash.value?(value) Проверка hash 是否包含给定的 value. |
41 | hash.values Возвращает новый массив, содержащий hash всех значений. |
42 | hash.values_at(obj, ...) Возвращает новый массив, содержащий hash Worth noting is the value associated with the given key. |