在this part of Play Framework documentation中,我找到了以下代码行:
object Authenticated extends AuthenticatedBuilder(req => getUserFromRequest(req))
困扰我的部分是eq => getUserFromRequest(req))
。为什么超类中有一个函数定义'参数?它是否应该只保留应该由子类继承的超类中的参数?
答案 0 :(得分:1)
在Scala中,函数是第一类元素,这意味着它们可以作为参数传递并作为函数结果返回。
从source file我们看到AuthenticatedBuilder
需要两个构造函数参数,它们都是函数。
class AuthenticatedBuilder[U](userinfo : RequestHeader => Option[U]
,onUnauthorized : RequestHeader => Result =
_ => Unauthorized(views.html.defaultpages.unauthorized())
) extends ActionBuilder[...] { ...
在您引用的示例中,只提供了一个参数,因为第二个参数具有默认值。