私は Java から Scala に慣れていないので、関数型プログラミングのことを理解するのはまだ少し難しいです。Play フレームワークにプロジェクトがあります。データベースにクエリを実行して、ID を持つ行を取得し、それらを html テンプレートに表示する必要があります。
これが私のコードです
def search(query: String) = Action.async{ request =>
val result = SearchEngine.searchResult(query)
val docs = result.map(DocumentService.getDocumentByID(_).map(doc => doc))
val futures = Future.sequence(docs)
futures.map{documents =>
Ok(views.html.results(documents.flatten))
}
}
getDocumentByID
Future[Options[Document]]
オブジェクトを返しますが、私のresults
テンプレートは取るArray[Document]
ので、に変換するのに役に立たなかっFuture[Options[Document]]
たArray[Document]
私が持っている現在のコードは私が行った中で最も近いものですが、それでもコンパイルされません。これはエラーです:
Error:(36, -1) Play 2 Compiler:
found : Array[scala.concurrent.Future[Option[models.Document]]]
required: M[scala.concurrent.Future[A]]