Неявное соответствие шаблону

У меня есть метод с большим количеством неявных параметров:

def hello(message:String)(implicit a:A,b:B,c:C, ..., user: User) = {...}

Теперь рассмотрим такой класс:

object Users extends Controller {
  implicit a: A = ...
  implicit b: B = ...
  ...

  def index(id:String) = Action {
     User.findById(id) match {
       case Some(user) => {
          implicit val _user = user
          hello("implicit")
       }
       case _ => BadRequest
     }
  }
}

Вы можете увидеть эту строку в приведенном выше примере:

implicit val _user = user

Она существует только для того, чтобы сделать объект userнеявным объектом. В противном случае я должен вызвать helloкак:

hello("implicit")(a,b,c,... user)

Я думаю, есть ли способ улучшить код, например. нам не нужно определять эту переменную _user, но сделать userнеявной.

7
задан romusz 29 March 2013 в 04:53
поделиться