Scala参数类型说明

时间:2012-10-21 09:11:12

标签: scala playframework

我是Scala和Play Framework的新手,之前从未见过以下参数类型。

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

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

1 个答案:

答案 0 :(得分:8)

通常,=> A是类型A的名称参数。这意味着只有在函数体中使用它时(以及何时)才会计算参数。因此,f是一个名称参数,其类型是一个函数,它接受String并将函数从Request[AnyContent]返回到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)