フォームのパラメーターはfn: => String
、文字列を返す (または文字列である) 「ジェネレーター」 (関数または値のいずれか) を表すため、たとえば、次のように定義されたメソッドがある場合があります。
def myMethod(fn: => String): String = "Fn output = " + fn
これを次のように呼び出します (ここで使用する戻り値の型は通常、コンパイラによって推測できます。教育目的で追加しているだけです)。
def myFn: String = "Hello!"
// Alternatively: def myFn(): String = "Hello!"
// or: val myFn: () => String = "Hello!"
// or most simply: val myString = "Hello!"
val output = myMethod(myFn) // output = "Fn output = Hello!"
これに基づいて、String を Int に変換する関数を受け取るメソッドを定義できます。
def my2ndMethod(fn: String => Int): Int = fn("4")
次のように呼び出します。
def my2ndFn(input: String) = 5 * input.toInt
// Alternatively: val my2ndFn: String => Int = input => 5 * input.toInt
val output2 = my2ndMethod(my2ndFn _) // output2 = 20
あなたが提供する場合、あなたはより複雑なエンティティを持っています: String を受け取る関数を返す (またはその関数である) もので、さらに を受け取り、Request[AnyContent]
(最終的に) Result を返す関数を返します (ふぅ!)。
これは、次のように定義および使用される関数を取ると考えることができます。
def authFn(username: String)(request: Request[AnyContent]): Result
val authenticatedResult = IsAuthenticated(authFn _)