4

我对 Scala 和 Play Framework 还很陌生,以前从未见过以下参数类型。

def IsAuthenticated(f: => String => Request[AnyContent] => Result)  

让我困惑的是这个f: =>部分。如果那=>不存在,我会将其视为将 a 映射String到 aRequest然后映射到 a 的函数Result

4

1 回答 1

8

通常,=> A是 A 类型的按名称参数。这意味着该参数仅在函数体中使用时(以及每次)时才被评估。因此,f是一个名称参数,其类型是一个函数,该函数接受 aString并将函数从 a 返回Request[AnyContent]到 a Result。以下是如何评估按名称参数的示例:

scala> def twice[A](a: =>A) = (a,a)
twice: [A](a: => A)(A, A)

scala> var i = 0
i: Int = 0

scala> twice {
     |   i += 1
     |   i
     | }
res0: (Int, Int) = (1,2)
于 2012-10-21T09:48:26.657 回答