Questo è un codice di esempio di un libro. Presumo che sia per Ruby 1.8.Espressione di caso diversa in 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
Ho eseguito su Ruby 1.9, ed ha ottenuto questo messaggio di errore:
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"
Come devo cambiare questo?
grazie @tadman, ho capito. –
"C'è stata una modifica nella sintassi tra 1.8.xe 1.9.x in cui il comando: non è più consentito" - ":" è stato * mai * permesso. Era * mai * parte della sintassi ufficiale di Ruby. Era * mai * documentato. È stato aggiunto al parser della risonanza magnetica per ragioni sconosciute ed è stato lasciato in sospeso per paura che una modifica al parser possa rompere qualcosa, ma Matz ha * sempre * reso * molto * chiaro che ':' in 'case' e' if' espressioni * non * fa parte della sintassi, che * non deve * essere usato e che * * sarà rimosso dal parser MRI in futuro, cosa che Koichi Sasada ha fatto in YARV. –
Ho iniziato a usarli in 1.8.x in modo abbastanza religioso poiché sembravano essere lo "standard", anche se di fatto piuttosto che ufficiale. È stato un brusco risveglio quando 1.9.x ha tirato il supporto.Almeno sono stato in grado di fare una regexp di Ruby per riparare il codice rotto al momento. – tadman