In Ruby 1.9 est-il un moyen de définir ce hachage avec la nouvelle syntaxe?
irb> { a: 2 }
=> {:a=>2}
irb> { a-b: 2 }
SyntaxError: (irb):5: syntax error, unexpected tLABEL
{ a-b: 2 }
^
avec l'ancien, ça marche:
irb> { :"a-b" => 2 }
=> {:"a-b"=>2}
Vous pouvez également utiliser la syntaxe suivante
{a: 1, b: 2, 'c-c': 3, d: 4}
Certains symboles légitimes ne peuvent pas être utilisés avec la nouvelle syntaxe. Je ne trouve pas de référence, mais il semble qu'un nom de symbole correspondant /^[a-zA-Z_][a-zA-Z_0-9]*[!?]?$/
est autorisé avec la nouvelle syntaxe. Le dernier caractère peut être le caractère spécial "!" ou "?".
Pour tout symbole qui ne répond pas à ces restrictions, vous devez utiliser le Ruby 1.8 Syntaxe, :'my-symbol-name'
Pour utiliser des tirets avec la nouvelle syntaxe:
<%= link_to "Link", link_path, {data: {something: 'value1', somethingelse: 'value2'}} %>
Cela générera:
<a href="/link" data-something='value1' data-somethingelse='value2'>Link</a>
Ce n'est peut-être pas exactement votre cas d'utilisation particulière, mais j'ai trouvé ce post tout en essayant de trouver une réponse moi-même donc je pensais partager mes conclusions.
Vous pouvez combiner l'ancienne et la nouvelle syntaxe:
{a: 1, b: 2, :'c-c' => 3, d: 4}