2011-07-05 24 views
10

Me gustaría saber cómo devolver una clave específica de un hash?¿Devuelve una sola tecla de un hash?

Ejemplo:

moves = Hash["Kick", 100, "Punch", 50] 

¿Cómo voy a devolver el primer "Kick" clave de este Hash?

NOTA: Soy consciente de que la siguiente función devolverá todas las claves del hash pero me interesa devolver una clave.

moves.keys #=> ["Kick", "Punch"] 
+0

¿Por qué solo está interesado en devolver una clave? –

+0

Estoy diseñando un juego y usando las teclas hash en las instrucciones de impresión. Por lo tanto, necesitaba acceder a una clave a la vez. – Dru

+0

¿Una "declaración de impresión" como al mostrar la información al usuario o al programador? –

Respuesta

14
moves.keys[0] 

le dará la primera clave. Puede obtener todas las claves cambiando el argumento pasado (0, 1, ... etc)

7

moves.keys.first lograrán eso.

+8

Puede funcionar en Ruby 1.9, donde se conserva la orden de troceo, pero no en 1.8 (la "primera" clave será cualquiera de las posibles) – Zabba

+0

Agradezco la respuesta rápida. ¡Gracias! – Dru

+0

@Zabba He cambiado de versión hace mucho tiempo, gracias por el recordatorio. – Ryanmt

20

Se puede utilizar:

first_key, first_value = moves.first 

o equivalentemente:

first_key = moves.first.first 

bastante bonito:

first_key = moves.each_key.first 

La otra posibilidad, moves.keys.first construirá una matriz intermediario para todas las llaves que podría ser muy grande

Tenga en cuenta que Ruby 1.8 no garantiza el orden de un hash, por lo que la clave que obtendrá no siempre será la misma. En Ruby 1.9, siempre obtendrá la misma clave ("Kick" en su ejemplo).

+1

O 'moves.first [0]' if '.first.first' se parece demasiado al tartamudeo. Espero que no te moleste que arruine a tu afortunado representante de "todos los sietes". –

Cuestiones relacionadas