2017-07-19 3 views
0

My (unvollständig) Code sieht wie folgt aus:Matching mit andthen

def doSomething(name: String): { implicit request => 
    check(name).map { 
     case Something() => Ok() 
     case SomethingElse() => NoContent 
    } 
    .andThen { 
     case r: Result => logger.info(s"Request finished with status ${r.header.status}") 
    } 
    } 

Ich erhalte eine Fehlermeldung wie folgt aus:

[error] myfile.scala:39: fruitless type test: a value of type scala.util.Try[play.api.mvc.Result] cannot also be a play.api.mvc.Result 
[error]  case r: Result => logger.info(s"Request finished with status ${r.header.status}") 

Wie kann ich das Try Vorstellungen?

Antwort

3

Wenn Sie versuchen, auf einem Try zu entsprechen, müssen Sie auf der Konstrukteurs übereinstimmen, nicht das, was seine Erbauer halten:

.andThen { 
    case Success(r) => 
     logger.info(s"Request finished with status ${r.header.status}") 

    case Failure(e) => // Handle failure 
}