Este es un código de ejemplo de un libro. Supongo que es para Ruby 1.8.Expresión de caso diferente en Ruby 1.9?
birthyear = 1986
generation = case birthyear
when 1946...1963: "Baby boomer"
when 1964...1976: "Generation X"
when 1977...2012: "new generation"
else nil
end
puts generation
lo corrió en Ruby 1.9, y tiene este mensaje de error:
Untitled 2.rb:12: syntax error, unexpected ':', expecting keyword_then or ',' or ';' or '\n'
when 1946...1963: "Baby boomer"
^
Untitled 2.rb:13: syntax error, unexpected keyword_when, expecting $end
when 1964...1976: "Generation X"
¿Cómo debería cambiar esto?
gracias @tadman, lo tengo. –
"Hubo un cambio en la sintaxis entre 1.8.x y 1.9.x donde: ahora no está permitido" - El ':' fue * nunca * permitido. * Nunca * fue parte de la sintaxis oficial de Ruby. Fue * nunca * documentado. Se agregó al analizador de MRI por razones desconocidas y se dejó por temor a que un cambio en el analizador sintético pudiera romper algo, pero Matz * siempre * lo hizo * muy * claro que ':' en 'case' y' if' expresiones es * no * parte de la sintaxis, que * no * debe utilizarse y que * se * eliminará del analizador de MRI en el futuro, lo que Koichi Sasada finalmente hizo en YARV. –
Empecé a usarlos en 1.8.x bastante religiosamente, ya que parecían ser el "estándar", incluso de facto en lugar de oficial. Fue un rudo despertar cuando 1.9.x obtuvo apoyo.Al menos pude hacer una expresión regular de Ruby para arreglar el código roto en ese momento. – tadman