2012-08-08 52 views
5

Es bastante extraño, pero no sé qué configurar ni dónde configurarlo. Estoy tratando de imprimir un simple valor de hash de la siguiente manera:¿Por qué mis hash se imprimen como cadenas?

#!/usr/bin/ruby 

names = Hash.new 
names[1] = "Jane" 
names[2] = "Thomas" 

puts names 

espero que la salida sea

{1=>"Jane", 2=>"Thomas"} 

mientras me

1Jane2Thomas 

¿Alguna idea?

+2

Parece que está usando Ruby 1.8. En Ruby 1.9, * obtienes * la salida que esperas. La respuesta de Oldergod resuelve tu problema en 1.8. – Mischa

+0

Voila, mi versión de ruby ​​es 1.8.7. Sí, de hecho la respuesta funciona bien. – PCoder

Respuesta

4

Debe utilizar inspeccionar.

puts names.inspect 
#=> {1=>"Jane", 2=>"Thomas"} 
+1

o simplemente 'p nombres' – tokland

3

El pone método llama to_s en su argumento (s) e imprime el resultado. El p método requiere, sin embargo inspeccionar en su argumento (s) e imprime el resultado:

{1=>"Jane", 2=>"Thomas"}.to_s 
#=> '1Jane2Thomas' 

{1=>"Jane", 2=>"Thomas"}.inspect 
#=> '{1=>"Jane", 2=>"Thomas"}' 

Por lo tanto, para tener una buena impresión de Hash, ya sea para uso

puts {1=>"Jane", 2=>"Thomas"}.inspect 

o

p {1=>"Jane", 2=>"Thomas"} 
Cuestiones relacionadas