4

私は Scala と Play Framework にかなり慣れていないので、次のパラメーターの型を見たことがありません。

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

私を混乱させているのはそのf: =>部分です。それがなければ、 aを a に、次に=>a にマップする関数と考えます。StringRequestResult

4

1 に答える 1

8

一般に、=> Aはタイプ A の名前によるパラメーターです。つまり、パラメーターは、関数の本体で使用された場合にのみ評価されます。したがって、は、型が を取り、 からへの関数を返すf関数である、名前によるパラメーターです。以下は、名前によるパラメーターの評価方法の例です。StringRequest[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)
于 2012-10-21T09:48:26.657 に答える