2012-09-06 23 views
21

Uso de rubí 1.9.3, no parecen claves de cadena para trabajar con la notación hash de colon:rubí nueva notación hash de colon con claves de cadena

1.9.3p194 :005 > {abc: 5} 
=> {:abc=>5} 

1.9.3p194 :004 > {'abc': 5} 
SyntaxError: (irb):4: syntax error, unexpected ':', expecting tASSOC 
{'abc': 5} 
    ^

Creo que estoy ejecutando la versión correcta de Rubí

1.9.3p194 :006 > RUBY_ENGINE 
=> "ruby" 
1.9.3p194 :007 > RUBY_VERSION 
=> "1.9.3" 
+2

No es una solicitud de función abierto para este - http: //bugs.ruby-lang.org/issues/4801 –

Respuesta

38

Correcto: la nueva notación de dos puntos para los hashes solo funciona cuando las teclas son símbolos.

Lo siento, así es como es.

actualización: símbolos generales son compatibles con el uso de la nueva notación en Ruby 2.2 y posteriores (cadenas como teclas todavía no lo son):

irb 
2.2.2 :001 > {'abc': 5} 
=> {:abc=>5} 
+4

Solo funciona cuando las teclas son * algunos * símbolos. Por ejemplo, no puede usarlo con ': $ set' o': 'pan.cakes''. –

+0

@muistooshort - Punto justo. Lo sospeché mucho, pero no pude encontrar evidencia en el pico. ¿Tienes una cita? – Chowlett

+1

Gracias por la respuesta rápida. ¿Cómo está la gente manejando esto? ¿Solo usando la notación hash del cohete cuando tienes una cuerda? – phillee