17427


標題の件についての質問です。

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/9d7HZ.png)

※追記です：処理の分岐を一度、文字列型で受け取ることでコンパイルエラーを回避することができました。  
もしもっと良い方法などがあればご教授お願いします。  
[![画像の説明をここに入力](https://i.stack.imgur.com/WatQv.png)](https://i.stack.imgur.com/WatQv.png)

※さらに追記です：この方法だと、sの型が  
(Option[Byte], Option[Byte])のときにだけ可能でした。  
Seq[(Option[Byte], Option[Byte])]の場合にはやはりうまく対応できないようです。


CC BY-SA 3.0
2015-09-28T00:15:11.070
17008
2015-10-08T11:17:53.487
2015-09-29T15:25:33.373
2278
2278
question
scala playframework
foreach 文でのコンパイルエラー


`Action.async`に与えるブロックは`Future[Result]`を返さないといけません。  
`Seq.foreach`は`Unit`を返すため、型が`Future[Unit]`になっていると思います。

元のコードからは、どのような時にどのような値をを返したいのか、読み取れませんが…

[code]

    repo.getRoomStatus(roomNumber, client_id).map {
        case Seq() => Ok(Json.obj("contracted" -> false))
        case _ => Ok(Json.obj("contracted" -> true))
    }
    
[/code]

とか

[code]

    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."))
    }
    
[/code]

とか


CC BY-SA 3.0
2015-10-08T11:17:53.487
17427
2015-10-08T11:17:53.487
12652
17008
answer