我有一个IsAuthenticated具有复杂参数类型的方法(我从 play2 的 zentasks 示例中复制了它):
def IsAuthenticated(f: => String => Request[AnyContent] => Result): Action[(Action[AnyContent], AnyContent)] =
Security.Authenticated(username, onUnauthorized) { userId =>
Action { implicit request =>
val email = request.session("user.email")
f(email)(request)
}
}
为了使用它,我的操作是:
def delete(id:String) = IsAuthenticated { email => request =>
...
}
你可以看到email如果我不需要使用它,我必须声明事件。我可以_改用:
def delete(id:String) = IsAuthenticated { _ => _ =>
...
}
但是_ => _ =>还是很无聊。
如何重构方法以使其使用更简单?例如,如果我不需要emailand request,我可以:
def delete(id:String) = IsAuthenticated {
...
}
如果我只需要request,我可以:
def delete(id:String) = IsAuthenticated { request =>
...
}
如果我需要email,那么我将它们全部声明:
def delete(id:String) = IsAuthenticated { email => request =>
...
}