【发布时间】:2020-02-12 12:59:28
【问题描述】:
我一直在使用 Play!使用 Java 的框架,并希望使用 Scala 进行尝试。 我已经开始阅读 Scala 书籍,但最基本的 Play!样品让我完全困惑:
def index(): Action[AnyContent] = Action { implicit request =>
Ok(views.html.index())
}
什么是 Scala 构造的 Play!在这里使用? 我知道我们正在定义一个函数,它返回一个带有通用参数AnyContent 的Action。但接下来的部分让我感到困惑。在这种情况下,分配意味着什么?
如果我去定义 Action[AnyContent] 它被定义为trait Action[A] extends EssentialAction { ... }
如果我在equals之后去Action的定义,它被定义为:
trait BaseController extends BaseControllerHelpers {
/**
* The default ActionBuilder. Used to construct an action, for example:
*
* {{{
* def foo(query: String) = Action {
* Ok
* }
* }}}
*
* This is meant to be a replacement for the now-deprecated Action object, and can be used in the same way.
*/
def Action: ActionBuilder[Request, AnyContent] = controllerComponents.actionBuilder
}
注意:我对使用的 Scala 构造感兴趣,我不在乎 Play!实际上是在这里做的,我有点理解。
【问题讨论】:
-
这不是赋值,
=在这里将方法签名与正文分开,就像您在def Action中看到的那样。 -
@LuisMiguelMejíaSuárez 在最近的 Play 版本中它不再是
object,而是在注入的ActionBuilder上调用apply,参见 stackoverflow.com/a/60186550/5205022
标签: scala playframework