【发布时间】:2010-11-18 01:38:09
【问题描述】:
我正在 Lift 中制作一个小问题管理系统来学习 Scala 和 Lift。
我有一个视图显示属于项目的单个问题。在将数据绑定到视图模板之前,我想检查我是否拥有所需的所有数据,因此我想专门检查一下:
- 已提供项目 ID 参数
- 存在具有提供的项目 ID 的项目
- 已提供问题 ID 参数
- 提供的问题 ID 存在问题
而且这些都需要按顺序进行评估,所以如果我现在以我目前对 Scala 的理解来编写它,我会执行以下操作:
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")
}
}
所以我想知道是否有更简单的方法来执行此操作?我认为 for 表达式可能能够执行类似的操作。请注意 Project.findByID 返回一个 Box[Project]。
【问题讨论】: