Ich bin der Autor des Tutorials.
Es tut mir schrecklich leid, dass dieser Beispielcode nicht mehr funktioniert (es funktionierte mit Ceylon 1.0.0, siehe unten).
Ich habe es in der Anleitung behoben und eine runnable sample in der Ceylon Web IDE erstellt, die Sie verwenden können, um dies auszuprobieren.
Grundsätzlich ist das Problem, dass, wie Lucas Werckmeister- wies darauf hin, readLine() ein String?
zurück, die zu String|Null
äquivalent ist, weil es nicht möglich sein kann, etwas von dem Eingang (Benutzer-Tastatur), in dem Fall, dass Sie null
zurück zu lesen .
Das Codebeispiel arbeitete mit Ceylon 1.0.0, da readLine()
verwendet wurde, um eine String
zurückzugeben.
Also für den Code zu kompilieren, müssen Sie sicherstellen zu überprüfen, dass das, was hast du zurück exists
(dh null
nicht.):
value userX = process.readLine();
value x = parseFloat(userX else "");
Wenn Sie userX else ""
tun, Sie Ceylon sagen, dass, wenn userX
existiert, sollte es das verwenden, wenn nicht, stattdessen ""
verwenden. Auf diese Weise erhalten wir immer ein String
zurück ...
Der gesamte Code-Snippet sollte wie folgt aussehen (siehe oben verknüpften Probe):
process.write("Enter a number (x): ");
value userX = process.readLine();
value x = parseFloat(userX else "");
process.write("Enter a number (y): ");
value userY = process.readLine();
value y = parseFloat(userY else "");
if (exists x, exists y) {
print("``x`` * ``y`` = ``x * y``");
} else {
print("You must enter numbers!");
}
Vielen Dank für den Hinweis auf den Fehler! Ich hoffe, Sie genießen den Rest des Tutorials.