2010-12-30 16 views
18

Según El bien fundamentada Rubyist:Hash en Ruby

Rubí permite una forma especial de representación símbolo en la posición clave hash, con los dos puntos después del símbolo en lugar de antes y la flecha separador de hash remoto. En otras palabras, esto:

hash = { :name => "David", :age => 49 } 

también se puede escribir así:

hash = { name: David, age: 49 } 

He probado el código anterior en Ruby 1.8.7 y 1.9.2 - No está funcionando. ¿Qué estoy haciendo mal?

+8

En el futuro, publique mensajes de error detallados si no puede hacer que un fragmento de código funcione. Esto es mucho más útil que "no está funcionando". – meagar

+0

Gracias, estaba tratando de saber cuándo se usa la sintaxis 'hash's' json-like', y aparentemente está disponible solo con 'symbols'. –

Respuesta

33

La nueva sintaxis hash en Ruby 1.9 aún requiere que las cadenas sean citadas, entonces en lugar de David necesita "David".

Prueba esto:

hash = { name: "David", age: 49 } 

Si el libro utiliza la palabra desnuda David sin comillas, es un error. Quizás le interese leer algunos de los other errata.

+1

Específicamente este: http://www.manning-sandbox.com/thread.jspa?threadID=33960&tstart=0 –

+0

Ruby trata el nombre: como un símbolo, es decir: ¿nombre? – loungerdork

+2

@loungerdork Sí. Es exactamente equivalente a '{: name =>" David "}' – meagar