【发布时间】:2011-08-01 13:32:09
【问题描述】:
我正在关注“Exploring Lift”一书,并尝试了他们的示例片段之一 - 这里唯一的区别是我不使用 MegaProtoUser 类,而是使用了我自己的类。但是,我遇到了以下问题。
这是我的片段:
User.currentUser.map(user =>
user.projects.flatMap(project => {
bind("e", chooseTemplate("project", "entry", in),
"name" -> Text(project.name.is),
"actions" -> {
SHtml.link("/manageProjects", () => project.delete_!, Text("Delete")) ++ Text(" ") ++
SHtml.link("/editProject", () => currentAccountVar(project), Text("Edit"))
})
})) openOr Text("You are not logged in.")
以下是编译器错误:
inferred type arguments [Seq[scala.xml.Node]{def seq: Seq[scala.xml.Node]{def companion: scala.collection.generic.GenericCompanion[Seq[Any]]}; def companion: scala.collection.generic.GenericCompanion[Seq[Any]]}] do not conform to method openOr's type parameter bounds [B >: scala.collection.mutable.Buffer[scala.xml.Node]]
type mismatch; found : scala.xml.Text required: Seq[scala.xml.Node]{def seq: Seq[scala.xml.Node]{def companion: scala.collection.generic.GenericCompanion[Seq[Any]]}; def companion: scala.collection.generic.GenericCompanion[Seq[Any]]}
如果我将 openOr Text("You are not logged in.") 替换为 open_!然后就可以了。
为什么我不能在这种情况下使用 openOr,这个错误是什么意思?正确的做法是什么?
【问题讨论】:
标签: scala compiler-errors lift