Case-Ausdruck in verschiedenen Ruby 1.9?
Dies ist ein Beispiel-code aus einem Buch. Ich nehme an, es ist für Ruby 1.8.
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
Ich habe es auf Ruby 1.9 und bekam diese Fehlermeldung:
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"
Wie soll ich das ändern?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gab es eine änderung in der syntax zwischen 1.8.x und 1.9.x, wo die
:
ist jetzt nicht mehr erlaubt:Technisch
:
wurde ersetzt durchthen
aber das ist ein optionales Schlüsselwort, wenn Sie einen Zeilenumbruch. Es ist ein bisschen mühsam zu gehen, die Spur zu Fällen, in denen Sie verwendet habe, die alte syntax, so dass hoffentlich die Suche nachcase
ist nah genug.:
war nie erlaubt. Es war nie - Teil der offiziellen syntax von Ruby. Es war nie dokumentiert. Es wurde Hinzugefügt, um MRT ' s parser aus unbekannten Gründen und es war auf der linken Seite, aus Angst, dass eine Veränderung der parser könnte etwas kaputt, aber Matz hat immer gemacht sehr klar, dass:
imcase
undif
Ausdrücke ist nicht Teil der syntax, dass es darf nicht verwendet werden, und dass es wird entfernt von der MRT-parser in die Zukunft, die Koichi Sasada schließlich doch in YARV.Nach der 3rd edition der Spitzhacke, es ist beabsichtigt.
p 125, Case-Ausdrücke :
Beispiel, mit
then
und keine newlines:Können Sie ersetzen Sie einfach die Doppelpunkte mit semi-Doppelpunkte.
Gerade getestet dieses Beispiel:
Semikolon funktioniert genau das gleiche wie eine neue Zeile in diesem Kontext, denke ich.
Es ist ein Fehler in Ihr steckt
auch versuchen, so etwas wie dieses :
Dies ist der richtige Weg, es zu tun: