質問: 標題の件についての質問です。 playframework + slick を使っていて、どうしてもコンパイルエラーとなってしまいます。 コメントしてある箇所の Ok(Json.obj("contracted" -> false)) をいれればコンパイルは通りますが、 Ok(Json.obj("contracted" -> true)) が適用されずに出力される値が一律 Ok(Json.obj("contracted" -> false)) となってしまいます。 質問者はjavaについては多少の知識がありますが、 scala、playframework、slickなどは初めての技術です。 質問者の力が未熟で質問の仕方にも問題があるかもしれませんが、 どうかご教授いただけると助かります。![画像の説明をここに入力](https://i.stack.imgur.com/9d7HZ.png) ※追記です:処理の分岐を一度、文字列型で受け取ることでコンパイルエラーを回避することができました。 もしもっと良い方法などがあればご教授お願いします。 ![画像の説明をここに入力](https://i.stack.imgur.com/WatQv.png) ※さらに追記です:この方法だと、sの型が (Option[Byte], Option[Byte])のときにだけ可能でした。 Seq[(Option[Byte], Option[Byte])]の場合にはやはりうまく対応できないようです。
回答: `Action.async`に与えるブロックは`Future[Result]`を返さないといけません。 `Seq.foreach`は`Unit`を返すため、型が`Future[Unit]`になっていると思います。 元のコードからは、どのような時にどのような値をを返したいのか、読み取れませんが... ``` repo.getRoomStatus(roomNumber, client_id).map { case Seq() => Ok(Json.obj("contracted" -> false)) case _ => Ok(Json.obj("contracted" -> true)) } ``` とか ``` repo.getRoomStatus(roomNumber, client_id).map { s => if(s.exists(t => t._1.isDefined && t._2.isDefined)) Ok(Json.obj("message" -> "valid data.")) else BadRequest(Json.obj("message" -> "invalid data.")) } ``` とか