我有一個方法,用有很多隱含參數的內隱:模式匹配
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
是隱含的。
+1,如果模式匹配「Option」,這是一個很好的解決方案。但是如果有很多案例呢? – Freewind 2012-03-10 03:38:05
@Freewind。我已經更新了我的答案,涵蓋了許多「案例」。 – romusz 2012-03-10 19:50:55