函数中有两个右手操作符的 Scala 语法
Scala syntax with two right hand operator in a function
谁能帮我理解下面的 scala 语法?
def index = withAuth {
implicit request => userId =>
Ok(views.html.app.index())
}
语法取自here。
我的理解是:withAuth
是一个Action
,request是匿名函数的输入。
但是我看不懂
- 两个右手运算符(
=>
)
- 它将从哪里接收
userId
值?
userId
也是匿名函数的输入参数吗?
谢谢
这只是一个匿名 curried 函数。单参数函数 returns 单参数函数。
// 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.
谁能帮我理解下面的 scala 语法?
def index = withAuth {
implicit request => userId =>
Ok(views.html.app.index())
}
语法取自here。
我的理解是:withAuth
是一个Action
,request是匿名函数的输入。
但是我看不懂
- 两个右手运算符(
=>
) - 它将从哪里接收
userId
值? userId
也是匿名函数的输入参数吗?
谢谢
这只是一个匿名 curried 函数。单参数函数 returns 单参数函数。
// 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.