Parâmetro implícito para função literal

Enquanto lê o Play! Documentação de estrutura, me deparei com este trecho:

def index = Action { implicit request =>
  session.get("connected").map { user =>
    Ok("Hello " + user)
  }.getOrElse {
    Unauthorized("Oops, you are not connected")
  }
}

Documentação explicaimplicit lá:

Como alternativa, você pode recuperar a sessão implicitamente de uma solicitação

Além disso, eu li este post:Literal com Implícito e parece logicamente que a função não pode ter um parâmetro implícito.

Se eu bem descobri, isso é porque umfunção, contrário amétodo tem sempre um contrato (interface).

De fato, por exemplo,Function1[Int, Function1[Int, Int]] tem como primeiro parâmetro de um tipo de retorno umInt, e assim nos impede de anotar este comoimplicit. Isso levaria a uma confusão sobre o seu tipo de retorno de alto nível:() => Int ouInt => Int ...

Portanto, o que o código de snippet anterior se comporta com implícito desde a primeiraActionO parâmetro requerido é uma função literal.

Eu acho que a razão permitindo que o compilador aceite este código é as múltiplas assinaturas deAction.apply() método:

def apply(block: Request[AnyContent] => Result): Action[AnyContent]def apply(block: => Result): Action[AnyContent] (redirecionando para o primeiro)

Como o segundo não precisa de algum parâmetro, este é selecionado na presença do parâmetro implícito de uma função literal?

questionAnswers(1)

yourAnswerToTheQuestion