我有以下代码:
object Application {
case class User(id: Long, username: String)
case class Request(path: String)
case class WrappedRequest(user: User, request: Request)
def updateUserAction(implicit request: WrappedRequest) = {
updateUser("john@mail.com") // <-- I need request.user to be passed implicitly here
}
def updateUser(email: String)(implicit user: User) = {
println(user.username)
}
def main(args: Array[String]) = {
implicit val request = WrappedRequest(User(1L, "john"), Request("/"))
updateUserAction
}
}
Run Code Online (Sandbox Code Playgroud)
从以上,是有可能通过request.user在updateUserAction方法将UpdateUser两个方法隐含?
进行隐式转换WrappedRequest,User以便所有需要的方法WrappedRequest都可以访问隐式User.
implicit def req2User(implicit request: WrappedRequest): User = request.user
Run Code Online (Sandbox Code Playgroud)