2011-08-01 13 views
1

「Exploring Lift」の本を読んでいて、サンプルスニペットの1つを試しましたが、唯一の違いはMegaProtoUserクラスを使用せず、私自身のもの。しかし、私は以下の問題を抱えています。ここでScala Lift:Box openOrが機能していないようです

は私のスニペットです:

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]]} 

私はopen_とopenOrテキストを( "あなたはログインしていません。")を交換した場合!それは動作します。

このコンテキストでopenOrを使用できないのはなぜですか?このエラーは何を意味しますか?それを行う正しい方法は何ですか?

答えて

2

コンパイラがシーケンスを必要としているが、単一の要素が見つかりました。

List(Text(....)) 

だけではなく

Text(....) 
+0

私はすでに試みたが、その後、私は次のエラーを取得してみてください。 型の不一致を。 found:scala.xml.NodeSeq required:Seq [scala.xml.Node] {def seq:Seq [scala.xml.Node] {def companion:scala.collection.generic.GenericCompanion [Seq [Any]]};コンパイラが望んでいるものがわからないようです... –

+0

私はこのようなエラーを覚えていると思います...あなたのコードを投稿することができますか?私はそれをコンパイルできるフォーム?その1つのエラーを除いて... –

+0

キム、あなたの時間のおかげで!ここに行く:https://gist.github.com/1118420私はできるだけそれを短縮しようとしました。 –

関連する問題