2011-10-13 12 views
18

A partir de Ruby 1.9, los hashes conservan el orden de inserción, que es muy bueno. Quiero saber la mejor forma de acceder al último par clave-valor.Acceso al último par clave-valor en un hash Ruby (1.9)

He escrito algo de código que hace esto:

hash.values.last 

Esto funciona y es muy fácil de comprender, pero tal vez es posible acceder al último valor directamente, en lugar de que a través de un intermediario (el conjunto de valores). ¿Lo es?

Respuesta

10

Nada incorporado, no. Pero usted podría un mono-parche si estuviera tan inclinado (por lo general no se recomienda, por supuesto):

class Hash 
    def last_value 
    values.last 
    end 
end 

Y luego:

hash.last_value 
16

Hash tener una "primera" método, pero que devuelven la primer par de modo de matriz, por último, algunas medidas son:

my_hash.to_a.last 

este último par de retorno en modo de matriz como "primer método"

2

acabo de hacer esto por una muy grande de hash:

hash.reverse_each.with_index do |(_, value), index| 
    break value if (index == 0) 
end 
14

una alternativa más que estoy usando mi mismo:

hash[hash.keys.last] 
+1

Esta es una solución increíble! –