2012-09-06 10 views
21

mit Ruby 1.9.3, string Tasten scheinen nicht mit Hash Doppelpunkt-Notation zu arbeiten:Rubin neue Hash-Doppelpunkt-Notation mit String-Schlüsseln

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

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

Ich glaube, ich bin die richtige Version von Ruby laufe

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

Es gibt eine Feature-Anfrage offen für diese - http: //bugs.ruby-lang.org/issues/4801 –

Antwort

38

Das ist richtig - die neue Doppelpunktnotation für Hashes funktioniert nur, wenn die Schlüssel Symbole sind.

Entschuldigung, so ist es.

aktualisieren: allgemeine Symbole werden mit der neuen Schreibweise in Ruby unterstützt 2.2 und später (Strings als Schlüssel sind immer noch nicht):

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

Funktioniert nur, wenn die Tasten * einige * Symbole sind. Zum Beispiel können Sie es nicht mit ': $ set' oder': 'pan.cakes'' verwenden. –

+0

@muistooshort - Messepunkt. Ich vermutete so viel, konnte aber keine Beweise in der Spitzhacke finden. Hast du ein Zitat? – Chowlett

+1

Danke für die schnelle Antwort. Wie gehen Leute damit um? Verwenden Sie einfach die Rocket-Hash-Notation, wenn Sie eine Zeichenfolge haben? – phillee