ruby syntax hash ruby-1.9

Hash Ruby 1.9 con un guión en una tecla



syntax ruby-1.9 (4)

En ruby ​​1.9, ¿hay alguna manera de definir este hash con la nueva sintaxis?

irb> { a: 2 } => {:a=>2} irb> { a-b: 2 } SyntaxError: (irb):5: syntax error, unexpected tLABEL { a-b: 2 } ^

con el anterior, está funcionando:

irb> { :"a-b" => 2 } => {:"a-b"=>2}


Hay algunos símbolos legítimos que no se pueden usar con la nueva sintaxis. No puedo encontrar una referencia, pero parece que se permite un nombre de símbolo coincidente /^[a-zA-Z_][a-zA-Z_0-9]*[!?]?$/ Con la nueva sintaxis. ¡El último personaje puede ser el personaje especial "!" o "?"

Para cualquier símbolo que no cumpla con estas restricciones, debe usar la sintaxis de Ruby 1.8, :''my-symbol-name''


Para usar guiones con la nueva sintaxis:

<%= link_to "Link", link_path, {data: {something: ''value1'', somethingelse: ''value2''}} %>

Esto generará:

<a href="/link" data-something=''value1'' data-somethingelse=''value2''>Link</a>

Puede que este no sea exactamente tu caso de uso particular, pero encontré esta publicación al intentar encontrar una respuesta yo mismo, así que pensé en compartir mis hallazgos.


Puede combinar la sintaxis antigua y la nueva:

{a: 1, b: 2, :''c-c'' => 3, d: 4}


También puedes usar la siguiente sintaxis

{a: 1, b: 2, ''c-c'': 3, d: 4}