To przykładowy kod z książki. Zakładam, że jest to dla Rubiego 1.8.Case expression different 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
Pobiegłem go na Ruby 1.9 i dostał ten komunikat o błędzie:
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"
Jak mam to zmienić?
dzięki @tadman, mam to. –
"Nastąpiła zmiana w składni między 1.8.x a 1.9.x, gdzie: nie jest już dozwolone" - "': 'było * nigdy * dozwolone. To była * nigdy * część oficjalnej składni Ruby. To było * nigdy * udokumentowane. Został on dodany do parsera MRI z nieznanych powodów i pozostawiono go w obawie, że zmiana w parserze może coś zepsuć, ale Matz * zawsze * uczynił go * bardzo * czystym, że ':' w 'case' i' if' wyrażenia to * nie * część składni, że * nie * musi być używana i że * zostanie * usunięta z parsera MRI w przyszłości, co Koichi Sasada w końcu zrobił w YARV. –
Zacząłem używać ich w wersji 1.8.x dość religijnie, ponieważ wydawało się, że są "standardem", nawet jeśli są raczej faktyczne niż oficjalne. To było niegrzeczne przebudzenie, gdy 1.9.x ściągnął wsparcie.Przynajmniej udało mi się stworzyć regexp w języku Ruby, aby naprawić zepsuty kod w tym czasie. – tadman