任何人都可以帮我理解下面的scala语法吗?
def index = withAuth {
implicit request => userId =>
Ok(views.html.app.index())
}
从here获取的语法。
我的理解是:withAuth
是Action
,请求是匿名函数的输入。
但是我无法理解
=>
)userId
价值? userId
也是匿名函数的输入参数吗?由于
答案 0 :(得分:1)
这只是一个匿名curried功能。带有单个参数的函数,返回带有单个参数的函数。
// anonymous function that returns function:
implicit request => {
val inner = userId: UserIdType => Ok(views.html.app.index())
inner
}
// inline `inner` and use type inference for UserIdType:
implicit request => {
userId => Ok(views.html.app.index())
}
// remove curly brackets for single expression result:
implicit request =>
userId => Ok(views.html.app.index())
可以用这种方式调用这样的函数:
curriedFunction(a)(b)
withAuth
参数的类型与此RequestType => UserIdType => ResultType
类似。它允许您以implicit
的形式发出请求。 See this answer.