在阅读播放! Framework文档,我遇到了这个片断:
def index = Action { implicit request =>
session.get("connected").map { user =>
Ok("Hello " + user)
}.getOrElse {
Unauthorized("Oops, you are not connected")
}
}
文档解释implicit
有:
另外,您可以从请求隐含检索会话
此外,我看到这篇文章: 文字与隐 ,它似乎在逻辑上是功能不能有隐含参数。
如果我也想通了,这是因为一个函数 ,违背方法始终合同(接口)。
事实上,例如, Function1[Int, Function1[Int, Int]]
已作为返回类型的第一个参数的Int
,从而防止我们诠释这一个为implicit
。 这将导致有关其高级别返回类型的困惑: () => Int
或Int => Int
...
因此,什么前面的代码段与内隐的行为,因为第一个Action
的所需的参数是文字功能。
我猜让编译器接受这段代码的多个签名的原因Action.apply()
方法:
-
def apply(block: Request[AnyContent] => Result): Action[AnyContent]
-
def apply(block: => Result): Action[AnyContent]
重定向到第一个)
由于第二并不需要一些参数,这是一个在字面函数的隐含参数的选择存在?