4
我是Scala和Play Framework的新手,我以前從未見過以下參數類型。Scala參數類型說明
def IsAuthenticated(f: => String => Request[AnyContent] => Result)
什麼是困惑我的是f: =>
一部分。如果=>
不在那裏,我會認爲它是一個函數,它將String
映射到Request
,然後映射到Result
。
我是Scala和Play Framework的新手,我以前從未見過以下參數類型。Scala參數類型說明
def IsAuthenticated(f: => String => Request[AnyContent] => Result)
什麼是困惑我的是f: =>
一部分。如果=>
不在那裏,我會認爲它是一個函數,它將String
映射到Request
,然後映射到Result
。
一般而言,=> 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)