h.values
ti fornirà un array richiesto.
> h.values
# ⇒ [
# [0] "val1",
# [1] "val2",
# [2] "val3"
# ]
UPD mentre la risposta con h[h.keys[0]]
è stata contrassegnata come corretta, io sono un po 'curioso, con parametri di riferimento:
h = {:a => "val1", :b => "val2", :c => "val3"}
Benchmark.bm do |x|
x.report { 1_000_000.times { h[h.keys[0]] = 'ghgh'} }
x.report { 1_000_000.times { h.values[0] = 'ghgh'} }
end
#
# user system total real
# 0.920000 0.000000 0.920000 ( 0.922456)
# 0.820000 0.000000 0.820000 ( 0.824592)
sembra che stiamo sputare il 10% della produttività.
Attenzione di Ruby versione differenze quando si utilizza 'values': 1.8.x * non * hanno alcun ordinamento, mentre le più Rubino ha inserimento-ordinazione . –
gli hash sono semanticamente non ordinati; se hai bisogno di indicizzazione simile ad array, forse vuoi una diversa struttura dati o una classe che supporti entrambi i meccanismi. – Eevee
@Eevee Tuttavia, hanno un ordine ben definito nella recente versione di Ruby. Ora, se questo dovrebbe essere fatto valere per un algoritmo .. è completamente un'altra domanda. –