大部分播放框架我都看到了代码块
// Returns a tasks or an 'ItemNotFound' error
def info(id: Long) = SecuredApiAction { implicit request =>
maybeItem(Task.findById(id))
}
是的,我的理解是定义一个方法info(id: Long)
,并在scala doc中创建scala中的函数,语法如下所示:
def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}
您能否告诉我在implicit request =>
SecuredApiAction
和{
的含义是什么?
答案 0 :(得分:7)
play.api.mvc.Action
具有处理请求和返回结果的辅助方法。 One if it's apply
overloads accepts a play.api.mvc.Request
parameter:
def apply(request: Request[A]): Future[Result]
通过将请求参数标记为implicit
,您允许隐式要求参数的其他方法使用它。它还在Play Framework documentation中说明了
将请求参数标记为隐式通常很有用 被其他需要它的API隐式使用。
如果您自己创建了一个方法,并且如果它的参数是隐式的,则标记为:
object X {
def m(): Unit = {
implicit val myInt = 42
y()
}
def y()(implicit i: Int): Unit = {
println(i)
}
}
由于范围内有implicit
,因此在调用y()
时,myInt
变量将隐式传递给方法。
scala> :pa
// Entering paste mode (ctrl-D to finish)
object X {
def m(): Unit = {
implicit val myInt = 42
y()
}
def y()(implicit i: Int): Unit = {
println(i)
}
}
// Exiting paste mode, now interpreting.
defined object X
scala> X.m()
42