Scala 分配给方法的无效隐式关键字?/游戏框架2

Scala 分配给方法的无效隐式关键字?/游戏框架2,scala,playframework-2.0,Scala,Playframework 2.0,正如建议的那样,我们可以使用隐式请求,以改进对与请求相关联的某些对象的访问 样本: def index = Action { implicit request => session.get("connected").map { user => Ok("Hello " + user) }.getOrElse { Unauthorized("Oops, you are not connected") } } 这是由于添加了属于控制器特征的以下隐式方法: /*

正如建议的那样,我们可以使用隐式
请求
,以改进对与请求相关联的某些对象的访问

样本:

def index = Action { implicit request =>
  session.get("connected").map { user =>
    Ok("Hello " + user)
  }.getOrElse {
    Unauthorized("Oops, you are not connected")
  }
}
这是由于添加了属于
控制器
特征的以下
隐式
方法:

/**
   * Retrieves the session implicitly from the request.
   *
   * For example:
   * {{{
   * def index(name:String) = Action { implicit request =>
   *   val username = session("username")
   *   Ok("Hello " + username)
   * }
   * }}}
   */
  implicit def session(implicit request: RequestHeader) = request.session
问题:为什么将此方法声明为
隐式
?仅仅将
请求
参数声明为
隐式
,还不够吗

我希望看到的是:


def session(implicit request:RequestHeader)=request.session

第一个
implicit
关键字实际上根本不需要编译示例。所以要么是游戏中的错误!,或者附加的
隐式
关键字是为了扮演另一个角色

特别是使用这个额外的
implicit
关键字,您可以调用一个方法,该方法需要类型为
Session
的隐式值,即使范围中只有类型为
RequestHeader
的隐式值(
session
还定义了类型为
RequestHeader
的隐式值,前提是范围中有类型为
RequestHeader
的隐式值)