Scala:如何隐式传递类隐式实例的属性?

Tei*_*raz 1 scala implicit

我有以下代码:

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.userupdateUserAction方法将UpdateUser两个方法隐含?

Mic*_*jac 5

进行隐式转换WrappedRequest,User以便所有需要的方法WrappedRequest都可以访问隐式User.

implicit def req2User(implicit request: WrappedRequest): User = request.user
Run Code Online (Sandbox Code Playgroud)