Scala Lift: Box openOr, похоже, не работает - PullRequest
1 голос
/ 01 августа 2011

Я слежу за книгой "Exploring Lift" и попробовал один из их примеров Snippets - единственное отличие здесь в том, что я не использую класс 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 ("Вы не авторизованы.") С open_!тогда это работает.

Почему я не могу использовать openOr в этом контексте, что означает эта ошибка?И как правильно это сделать?

1 Ответ

2 голосов
/ 01 августа 2011

Ошибка означает, что компилятор хочет последовательность, но нашел один элемент. Попробуйте

 List(Text(....))

вместо

Text(....)
...