2016-03-18 77 views
0

我正在使用Scala & Play 2.5。我堅持這個錯誤:Scala/Play 2.5:適用於替代方法的重載方法

Game.scala:99: overloaded method value apply with alternatives: 
[error] (block: => play.api.mvc.Result)play.api.mvc.Action[play.api.mvc.AnyContent] <and> 
[error] (block: play.api.mvc.Request[play.api.mvc.AnyContent] => play.api.mvc.Result)play.api.mvc.Action[play.api.mvc.AnyContent] <and> 
[error] [A](bodyParser: play.api.mvc.BodyParser[A])(block: play.api.mvc.Request[A] => play.api.mvc.Result)play.api.mvc.Action[A] 
[error] cannot be applied to (Object) 
[error]  def start(id: String, apiKey: Option[String]) = Action { 

這是函數:

def start(id: String, apiKey: Option[String]) = Action { 
    apiKey match { 
    case Some(API_KEY) => { 
     Server.actor ! Server.Start(id) 
     Ok("Started") 
    } 
    case _ => Future.successful(Unauthorized) 
    } 
} 

回答

2

的問題是,在match語句的結果已經被推斷爲Object,因爲從一個case語句你」重新返回Result,並從另一個返回Future[Result],所以唯一常見的超級類型是Object。要修復,請將case _ => Future.successful(Unauthorized)更改爲case _ => Unauthorized