English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ein Hash ist eine Sammlung von Schlüssel-Wert-Paaren wie "key" => "value". Ein Hash ähnelt einem Array, nur dass seine Indizes nicht auf numerische Werte beschränkt sind.
Der Index eines Hashes (oder auch "Schlüssel" genannt) kann fast jeder Objekt sein.
虽然 Hash 和数组类似,但有一个很重要的区别:Hash 的元素没有特定的顺序。如果顺序很重要,就要使用数组了。
与数组一样,有各种不同的方式来创建哈希。您可以通过 new 类方法创建一个空的哈希:
months = Hash.new
您也可以使用 new 创建带有默认值的哈希,不带默认值的哈希是 nil:
months = Hash.new("month") oder 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 Den value 给定的值与 key 关联给定的键。 |
4 | hash.clear alle Schlüssel-Wert-Paare aus dem Hash entfernen. |
5 | hash.default(key = nil) Rückgabe hash Standardwert, wenn nicht durch default= gesetzt, wird nil zurückgegeben.(Wenn der Schlüssel in hash nicht existiert, gibt [] einen Standardwert zurück.)。 |
6 | hash.default = obj für hash Standardwerte setzen. |
7 | hash.default_proc wenn hash durch Block erstellt wird, wird der Block zurückgegeben. |
8 | hash.delete(key) [oder] array.delete(key) { |key| block } durch key von hash entfernt werden. Wenn ein Block verwendet wird und kein passendes Schlüssel-Wert-Paar gefunden wird, wird das Ergebnis des Blocks zurückgegeben. Dies wird mit delete_if vergleichen. |
9 | hash.delete_if { |key,value| block } Block ist true jeder Block, von hash entfernt werden |
10 | hash.each { |key,value| block } durchsuchen hashfür jede key einmal den Block aufrufen, den-value als ein Element aus zwei Elementen |
11 | hash.each_key { |key| block } durchsuchen hashfür jede key einmal den Block aufrufen, den key als Parameter |
12 | hash.each_key { |key_value_array| block } durchsuchen hashfür jede key einmal den Block aufrufen, den key und value als Parameter |
13 | hash.each_value { |value| block } durchsuchen hashfür jede key einmal den Block aufrufen, den value als Parameter |
14 | hash.empty? überprüfen, ob der Hash leer ist (enthält keine Schlüssel-Wert-Paare), wird zurückgegeben true oder false. |
15 | hash.fetch(key [, default] ) [oder] hash.fetch(key) { | key | block } durch das Geben key von hash wird der Wert zurückgegeben. Wenn der Wert nicht gefunden wird keyangegeben ist und keine anderen Parameter bereitgestellt werden, wird geworfen IndexError Ausnahme; wenn defaultwird zurückgegeben defaultwenn ein optionaler Block angegeben ist, wird das Ergebnis des Blocks zurückgegeben. |
16 | hash.has_key?(key) [oder] hash.include?(key) [oder] hash.key?(key) [oder] hash.member?(key) prüfen, ob der gegebene key ob sie im Hash existiert, wird zurückgegeben true oder false. |
17 | hash.has_value?(value) überprüfen, ob der Hash den gegebenen value. |
18 | hash.index(value) für das gegebene value wird der Hash zurückgegeben keywenn keine Übereinstimmung gefunden wird, wird zurückgegeben nil. |
19 | hash.indexes(keys) gibt eine neue Array zurück, die aus den Werten der gegebenen Schlüssel besteht. Ungefundenen Schlüssel werden den Standardwert eingefügt. Dieses Verfahren ist veraltet und sollte durch select ersetzt werden. |
20 | hash.indices(keys) gibt eine neue Array zurück, die aus den Werten der gegebenen Schlüssel besteht. Ungefundenen Schlüssel werden den Standardwert eingefügt. Dieses Verfahren ist veraltet und sollte durch select ersetzt werden. |
21 | hash.inspect gibt die Druckversion des Hashes zurück. |
22 | hash.invert eine neue hashumkehren hash der keys und valuesDas bedeutet, dass im neuen Hash,hash Schlüssel werden in Werte und Werte in Schlüssel umgewandelt. |
23 | hash.keys eine neue Array erstellen, die hash Schlüssel. |
24 | hash.length in ganzzahliger Form zurückzugeben hash Größe oder Länge. |
25 | hash.merge(other_hash) [oder] hash.merge(other_hash) { |key, oldval, newval| block } Gibt einen neuen Hash zurück, der hash und other_hash Inhalt, überschreiben hash, der mit other_hash Schlüssel-Wert-Paare mit wiederholten Schlüsseln. |
26 | hash.merge!(other_hash) [oder] hash.merge!(other_hash) { |key, oldval, newval| block } entspricht merge, aber tatsächlich ändert sich der Hash. |
27 | hash.rehash basierend auf jedem key der aktuellen Werte neu aufgebaut hash. Wenn der Wert nach der Einfügung geändert wird, wird dieses Verfahren neu indexiert hash. |
28 | hash.reject { |key, value| block } ähnlich delete_if, aber auf eine Kopie des Hashes angewendet. Entspricht hsh.dup.delete_if. |
29 | hash.reject! { |key, value| block } entspricht delete_if, aber gibt nil zurück, wenn keine Änderungen vorgenommen wurden. |
30 | hash.replace(other_hash) Den hash den Inhalt ersetzen durch other_hash Inhalt. |
31 | hash.select { |key, value| block } eine neue Array zurückgeben, die von block Rückgabe true des hash aus den Schlüssel-Wert-Paaren. |
32 | hash.shift von hash ein Schlüssel-Wert-Paar aus hash entfernen und dieses Schlüssel-Wert-Paar als zwei-elementiges Array zurückgeben. |
33 | hash.size in ganzzahliger Form zurückzugeben hash des size oder length. |
34 | hash.sort Den hash in eine zweidimensionale Array umwandeln, der Schlüssel-Wert-Paare enthält, und dann sortieren. |
35 | hash.store(key, value) Speichern hash eines Schlüssel-Wert-Paars. |
36 | hash.to_a Eine zweidimensionale Array aus hash erstellen. Jeder Schlüssel-Wert-Paar wird in ein Array umgewandelt und alle diese Arrays werden in einem Array gespeichert. |
37 | hash.to_hash Rückgabe hash(self). |
38 | hash.to_s Den hash In einen Array umwandeln und dann diesen Array in eine Zeichenkette umwandeln. |
39 | hash.update(other_hash) [oder] hash.update(other_hash) {|key, oldval, newval| block} Gibt einen neuen Hash zurück, der hash und other_hash Inhalt, neu schreiben hash mit other_hash Schlüssel-Wert-Paare mit wiederholten Schlüsseln. |
40 | hash.value?(value) Überprüfen hash enthalten value. |
41 | hash.values Gibt ein neues Array zurück, das hash enthalten. |
42 | hash.values_at(obj, ...) Gibt ein neues Array zurück, das hash Der Wert, der mit dem angegebenen Schlüssel verbunden ist. |