En ruby 1.9 hay una forma 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, es el trabajo:

irb> { :"a-b" =>  2 }
=> {:"a-b"=>2}
InformationsquelleAutor makevoid | 2010-01-25

4 Comentarios

  1. 8

    Usted también puede utilizar la siguiente sintaxis

    {a: 1, b: 2, 'c-c': 3, d: 4}
    • impresionante! +1 para la actualización con la nueva rubí de la sintaxis, de la versión que está disponible? 2? 2.1?
    • No sé, acabo de probar esta sintaxis y había funcionado 🙂
    • nueva sintaxis está disponible desde 2.2: github.com/ruby/ruby/blob/v2_2_0/NEWS#language-changes
    • @EddyMulyono +1
    • también las comillas dobles de trabajo: {a: 1, "b-b": 2}
  2. 64

    Hay algunas legítimas símbolos que no pueden ser usados con la nueva sintaxis. No puedo encontrar una referencia, pero parece que un símbolo de coincidencia de nombre de /^[a-zA-Z_][a-zA-Z_0-9]*[!?]?$/ se permite con la nueva sintaxis. El último personaje puede ser el especial carácter «!» o «?».

    Para cualquier símbolo que no cumple con estas restricciones, usted tiene que utilizar el Ruby 1.8 sintaxis, :'my-symbol-name'

    • Lo que tiene sentido; ¿cómo es el intérprete Ruby supone leer que, de otra manera?
    • He comprobado en la parse.c y parece que con la nueva sintaxis el símbolo se analiza como tLabel token. Y la coincidencia de nombre se parece más a /[a-zA-Z_][a-zA-Z0-9]/ 🙂
    • Puntos Extra para ir a la fuente. He editado el regex en mi respuesta. Gracias!
    • triste noticia para los puristas 🙁
    • No me puedo imaginar un purista de programación en Ruby.
    • En Ruby 2.1 y Rails 4.0, pasando data: { my_attr: 'foo' } a un método auxiliar como button_tag producirá data-my-attr="foo" en el renderizado de HTML
    • ? y ! también son también caracteres válidos si son los caracteres finales antes de los dos puntos. Similar a los nombres de método. Así que esto es válido: {a: 1, b?: 2, c!: 3}
    • Editado, gracias.
    • lo mismo funciona con Ruby 2.0 y 3.2, por ejemplo, data: { my_attr: 'foo' } – > data-my-attr="foo".

  3. 25

    El uso de guiones con la nueva sintaxis:

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

    Que esto va a generar:

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

    Esto puede no ser exactamente su caso de uso en particular, pero me he encontrado con este post, tratando de encontrar una respuesta a mí mismo, así que pensé en compartir mis hallazgos.

    • Niza – esto es exactamente lo que yo estaba tratando de hacer, gracias!
    • AFAIK, esto es específico de la data atributos, si usted tiene otros atributos con los guiones usted tiene que utilizar la sintaxis antigua.
    • El HAML documentación menciona los atributos de datos por separado. Como un bono, usted puede conseguir varios guiones por el uso de caracteres de subrayado: data: {author_id: 123}. Grandes cosas.
  4. 22

    Puede combinar la vieja y la nueva sintaxis:

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

Dejar respuesta

Please enter your comment!
Please enter your name here