8180


![画像の説明をここに入力](https://i.stack.imgur.com/WDHme.png)

[code]

    //Count.scala
    object Count extends Controller{
      def play = Action { request =>
        val videoId = request.body.asFormUrlEncoded.get("videoId").head
        val Video = new Video()
        Video.incrementPlayCount(videoId)
        Ok("Success!")
      }
    }
    
[/code]

これは何が原因でエラーが出ているのですか？


CC BY-SA 3.0
2015-03-19T14:19:31.197
8146
2015-03-20T08:23:43.917
8355
question
scala playframework
recursive method play needs result type


原因は `play` というメソッド名です。メソッド名を変更すればコンパイルが通るはずです。

以下推測混じりですが詳しく。

Play は conf/routes を元にコード生成を行っていますが、その生成されたコードでコンパイルエラーが起きています。生成されたコードは
`target/scala-<version>/src_managed` ディレクトリにあります。

今回エラーの原因は `play` というメソッド名にあります。推測ですが、`play`
はパッケージ名などにも使われているため、それと衝突したためにこのエラーが発生しているものと思います。

エラーメッセージが、「再帰メソッド `play`
には戻り値の型が必要です」ですが、生成されたコードを見たところ再帰しておらず、正しいエラーメッセージとは言えないので、それは Scala
コンパイラのバグなのかもしれません。

なお、Play 2.4.0-M3
で試したところエラーは発生しませんでした。どの修正かまでは追っていませんが、なんらかの対策がすでに取られたのかもしれません。


CC BY-SA 3.0
2015-03-20T08:23:43.917
8180
2015-03-20T08:23:43.917
3173
8146
answer