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
的隐式值)