Rubino hash (hash)
Hash (Hash) è simile alla "chiave" => "valore" di una tale raccolta di coppie chiave-valore. Simile a un array hash, ma non è limitata all'uso di numeri indice.
indice di hash (o "chiave") può essere quasi qualsiasi oggetto.
array di hash Anche se simili, ma non vi è una distinzione molto importante: elementi di hash sono in nessun ordine particolare. Se l'ordine è importante, allora si dovrebbe utilizzare la matrice.
Creazione di un hash
Come un array, una varietà di modi diversi per creare un hash. È possibile creare un hash vuoto attraversonuovometodo di classe:
months = Hash.new
È inoltre possibile utilizzare ilnuovohash viene creato con i valori di default, senza valore di default di hash èpariazero:
months = Hash.new( "month" ) 或 months = Hash.new "month"
Quando si accede a un hash con i valori di default in un qualsiasi tasto, se la chiave o il valore non esiste, restituisce il valore hash di accesso predefinito:
#!/usr/bin/ruby months = Hash.new( "month" ) puts "#{months[0]}" puts "#{months[72]}"
Eseguire l'uscita precedente esempio è il seguente:
month month
#!/usr/bin/ruby H = Hash["a" => 100, "b" => 200] puts "#{H['a']}" puts "#{H['b']}"
Eseguire l'uscita precedente esempio è il seguente:
100 200
È possibile utilizzare qualsiasi oggetto di Ruby come una chiave o un valore, o si può utilizzare la matrice, come l'esempio mostrato:
[1,"jan"] => "January"
Hash metodo incorporato
Se è necessario chiamare il metodo Hash, è necessario creare un'istanza di un oggetto Hash. Ecco un modo per creare un'istanza oggetto Hash:
Hash[[key =>|, value]* ] or Hash.new [or] Hash.new(obj) [or] Hash.new { |hash, key| block }
Ciò restituirà un dato oggetto riempito di nuovo hash. Ora, utilizzando gli oggetti creati, possiamo chiamare uno qualsiasi dei metodi disponibili. Ad esempio:
#!/usr/bin/ruby $, = ", " months = Hash.new( "month" ) months = {"1" => "January", "2" => "February"} keys = months.keys puts "#{keys}"
Eseguire l'uscita precedente esempio è il seguente:
["1", "2"]
Di seguito sono il metodo di hash comune (ipotizzando un oggetto Hashhash):
No. | Metodo & descrizione |
---|---|
1 | hash == other_hash Controllare se i due hanno lo stesso valore di chiave hash per il numero di coppie chiave-valore sono abbinati tra loro per determinare se i due hash sono uguali. |
2 | hash. [tasto] Utilizzare i valori di riferimento chiave del hash. Se la chiave non si trova, per poi tornare ai valori di default. |
3 | hash. [tasto] = valore Ilvaloreindicato il valore dellachiaveassociata alla chiave data. |
4 | hash.clear Rimuovere tutte le chiavi dalla hash. |
5 | hash.default (key = nil) Restituisce il valore di default dihash,se non impostata di default =, torna nullo. (Se la chiave non esiste nelhash,quindi [] restituisce un valore predefinito.) |
6 | hash.default = obj Impostare i valori predefiniti perl'hash. |
7 | hash.default_proc Sel'hashcreato dal blocco, il blocco è tornato. |
8 | hash.delete (chiave) [o] array.delete (chiave) {| chiave | block} Togliere dal tastocancellettocon coppia dichiavi.Se il blocco e non è riuscito a corrispondenti coppie chiave-valore, il risultato del blocco viene restituito. Confronto condelete_if. |
9 | hash.delete_if {| chiave, valore | block } E'veroper ogni blocco del blocco, eliminarelachiave dalcancelletto. |
10 | hash.each {| chiave, valore | block } Traversel'hash,chiamato una volta per ogni bloccochiave,passare valore-chiave come un array di due elementi. |
11 | hash.each_key {| chiave | block} Traversel'hash,chiamato una volta per ogni bloccochiave,passarechiavecome parametro. |
12 | hash.each_key {| key_value_array | block} Traversel'hash,chiamato una volta per ogni bloccochiave,passarechiavee ilvalorecome argomenti. |
13 | hash.each_value {| Valore | block} Traversel'hash chiamatouna volta per ogni bloccochiave,passato come unvalore di parametro. |
14 | hash.empty? Controllare se l'hash è vuota (non contiene le coppie chiave-valore), e restituisceveroofalso. |
15 | hash.fetch (tasto [, default]) [o] hash.fetch (chiave) {| chiave | block} Il valore restituito dalhashattraverso una determinatachiave.Se non si trova lachiave,e non ha fornito ulteriori parametri, lanciare un'eccezioneIndexError,se in caso didefault,ritornadi default,se il blocco opzionale, viene restituito risultato del blocco. |
16 | hash.has_key? (chiave) [o] hash.include? (chiave) [o] hash.key? (chiave) [o] hash.member? (chiave) Controllare se ilparametro chiaveesiste nella hash, restituiscetrueofalse. |
17 | hash.has_value? (valore) Controllare se l'hash contiene ilvalore dato. |
18 | hash.index (valore) I ritorni per un datovaloredi iltasto cancelletto,i ritorni se viene trovata alcuna corrispondenzazero. |
19 | hash.indexes (tasti) Esso restituisce un nuovo array dal valore di un dato componenti chiave. Non riesci a trovare la chiave per inserire il valore di default. Questo metodo è stato deprecato, si prega di utilizzare il select. |
20 | hash.indices (tasti) Esso restituisce un nuovo array dal valore di un dato componenti chiave. Non riesci a trovare la chiave per inserire il valore di default. Questo metodo è stato deprecato, si prega di utilizzare il select. |
21 | hash.inspect Indietro Stampa versione stringa di hash. |
22 | hash.invert Crea una nuovahash,hash di inversione dichiavievalori.In altre parole, il nuovohash,valore hash diventa la chiave, il valore diventerà chiave. |
23 | hash.keys Creare un nuovo array con il tastocancelletto./ Td> |
24 | hash.length Esso restituisce una dimensionehashintero o la lunghezza. |
25 | hash.merge (other_hash) [o] hash.merge (other_hash) {| chiave, oldval, newval | block} Restituisce un nuovo hash,hashcontiene contenuti eother_hashriscrive tasto cancelletto conother_hashcon una coppia di chiavi duplicate. |
26 | hash.merge! (other_hash) [o] hash.merge (other_hash)! {| chiave , oldval, newval | block} E si fondono lo stesso, ma in realtà hash è cambiato. |
27 | hash.rehash Ristabilirel'hashin base al valore corrente di ciascuntasto.Se si inserisce il valore è cambiato, il processo saràhash re-indicizzati. |
28 | hash.reject {| chiave, valore | block } Come èveroper ognibloccochiave per creare un nuovohash. |
29 | hash.reject! {| chiave, valore | block} Erifiutarela stessa, ma in realtà hash è cambiato. |
30 | hash.replace (other_hash) Sostituire il contenuto delhashdelother_hash contenuti. |
31 | hash.select {| chiave, valore | block } Restituisce un nuovo array, ilbloccorestituisce valoriverichiavehashnelle coppie. |
32 | hash.shift Togliere dalhashin una coppia di chiavi e invia il valore della chiave restituita come un array di due elementi. |
33 | hash.size Esso restituisce unhashintero didimensionio lunghezza. |
34 | hash.sort L'hashviene convertita in una matrice bidimensionale che contiene serie di valori-chiave e quindi ordinato. |
35 | hash.store (key, value) Hashmemorizzato in una coppia chiave-valore. |
36 | hash.to_a Creazione di un array bidimensionale dalla hash. Ogni coppia chiave-valore in un array, tutti questi array sono memorizzati in un array. |
37 | hash.to_hash I ritornidi hash (auto). |
38 | hash.to_s L'hashviene convertito in un array, l'array viene convertito in una stringa. |
39 | hash.update (other_hash) [o] hash.update (other_hash) {| chiave, oldval, newval | block} Restituisce un nuovo hash,hashcontiene contenuti eother_hashriscrive tastocancellettoconother_hashcon una coppia di chiavi duplicate. |
40 | hash.value? (valore) Controllare sel'hashcontiene ilvalore dato. |
41 | hash.values Esso restituisce un nuovo array contenente tutti i valori delhash. |
42 | hash.values_at (obj, ...) Esso restituisce un nuovo array contenente il valorehashassociata ad una determinata chiave. |