Scala函数中的参数列表.有人可以解释一下代码吗?

Ole*_*leg 5 scala playframework playframework-2.0

有人可以解释特征中使用的Scala代码安全的playframework示例应用程序zentask:

def IsAuthenticated(f: => String => Request[AnyContent] => Result) = Security.Authenticated(username, onUnauthorized) { user =>
Action(request => f(user)(request))
}
Run Code Online (Sandbox Code Playgroud)

我刚开始学习Scala并且无法弄清楚这个序列f: => String => Request[AnyContent] => Result.这是什么意思?我在手册中找不到任何使用几个=>代替参数列表的功能的例子.

我错过了什么?

Jes*_*per 7

也许如果你添加一些parantheses更容易:

f: => (String => (Request[AnyContent] => Result))
Run Code Online (Sandbox Code Playgroud)

f是一个按名称调用的参数 ; 它是一个函数,它接受String并返回:一个函数,它接受一个Request[AnyContent]并返回一个Result.


Nic*_*las 4

f是一个函数,给定 aString将产生一个等待 a提供 a 的函数Result[AnyContent]Result

然后在第 2 行,您传递给f参数user,该参数必须是 a String,然后将该request参数传递给结果函数。

这种传递参数的方式称为柯里化(currying)。可以在那里找到一个既简短又复杂一点的示例:http ://www.scala-lang.org/node/135