Неявный параметр для литеральной функции

Пока читаю Play! Framework Framework, я наткнулся на этот фрагмент:

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

Документация объясняетimplicit там:

Кроме того, вы можете неявно получить Session из запроса.

Кроме того, я прочитал этот пост:Литерал с неявным и кажется логичным, что функция не может иметь неявный параметр.

Если я хорошо понял, это потому, чтофункция, вопрекиметод всегда есть контракт (интерфейс).

Действительно, например,Function1[Int, Function1[Int, Int]] имеет в качестве типа возврата "первый параметрIntи, таким образом, мешает нам аннотировать этот какimplicit, Это может привести к путанице относительно типа возвращаемого значения высокого уровня:() => Int или жеInt => Int ...

Следовательно, то, что предыдущий фрагмент кода ведет себя неявно, так как first 'ActionОбязательным параметром является литеральная функция.

Я предполагаю, что причиной, по которой компилятор может принять этот код, является наличие нескольких подписейAction.apply() метод:

def apply(block: Request[AnyContent] => Result): Action[AnyContent]def apply(block: => Result): Action[AnyContent] (перенаправление на первый)

Так как второе не делаетне нужен какой-то параметр, этот выбран в присутствии литеральной функции 'неявный параметр?

Ответы на вопрос(1)

Ваш ответ на вопрос