2016-03-18 46 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