Ich mache ein kleines Issue Management System in Lift, um sowohl Scala als auch Lift zu lernen.Methode Abhängigkeiten und Fehlerbehandlung
Ich habe eine Ansicht, die ein einzelnes Problem anzeigt, das zu einem Projekt gehört. Bevor ich Daten an die View-Template binden, möchte ich überprüfen, dass ich alle Daten erforderlich ist, so möchte ich ausdrücklich, dass der Check:
- Ein Projekt ID param hat
- Ein Projekt existiert mit dem mitgelieferten geliefert worden Projekt ID
- Ein Problem ID param wurde geliefert
- es besteht ein Problem mit dem mitgelieferten Heft ID
Und diese braucht, um zu bewerten, so dass, wenn ich es jetzt mit meinem aktuellen Verständnis bin zu schreiben von Scala, würde ich folgendes tun:
class Project {
def findByID(xhtml:NodeSeq): NodeSeq =
param("projectID") match {
case Full(projectID) =>
Project.findByID(projectID) match {
case Full(projectID) =>
param("issueID") match {
....
}
case _ => Text("Project does not exist")
}
case _ => Text("projectIDNotSupplied")
}
}
Also ich frage mich, ob es eine einfachere Möglichkeit ist, dies zu tun? Ich denke, dass ein for expression etwas Ähnliches leisten könnte. Beachten Sie, dass Project.findByID eine Box [Project] zurückgibt.
Hey Jorge sieht so aus, das wird ein Leckerbissen funktionieren, nur dass dies ein Schnipsel ist, so weit ich weiß, muss der Rückgabetyp sein: NodeSeq. Wenn nicht, bekomme ich eine Fehlermeldung, dass die Methode nicht gefunden werden kann. Um das zu umgehen, kann ich das ganze for() in einen Block schreiben und openOr (Text ("fail")) darauf setzen. Aber jetzt, wenn eine der Abhängigkeiten fehlschlägt, bekomme ich die Nachricht "fail". Ich habe versucht, die Methode run() zu verwenden, aber ich verstehe es nicht ganz. irgendwelche Ideen? –
Ich habe das obige Code-Snippet bearbeitet, um NodeSeq zurückzugeben. –
Ausgezeichnet, Danke Jorge. Das war einer jener "warum habe ich nicht an diese Fälle gedacht". Danke noch einmal –