は、私がどこかでこのScalaの関数宣言を参照してください。=> ... => ... => ...
は、どのようにそれを理解する:この種の関数宣言を理解するには: `=> .. => .. => ..``?
def test(f: => String => Result[AnyContent] => Result) = ...
が、私はこのような機能を見たことがありませんか?
は、私がどこかでこのScalaの関数宣言を参照してください。=> ... => ... => ...
は、どのようにそれを理解する:この種の関数宣言を理解するには: `=> .. => .. => ..``?
def test(f: => String => Result[AnyContent] => Result) = ...
が、私はこのような機能を見たことがありませんか?
String => Result[AnyContent] => Result
デューキュアからFunction1[String, Function1[Result[AnyContent], Result]]
です。それを=> String => (Result[AnyContent] => Result])
として読むと便利です。つまり、=> String
を取る関数は、関数Result[AnyContent] => Result
(カルト関数とも呼ばれます)を返します。
=> A
は、タイプA
の名前パラメータです。したがって、=> String => Result[AnyContent] => Result
は、test
が型名String => Result[AnyContent] => Result
の引数を取ることを示します。 by-nameパラメータの詳細についてはhereをご覧ください。
関数は通常のデータ型です。関数は関数を返すことができます。
f: => String => Result[AnyContent] => Result
は
ストリング=>(結果[AnyContent] =>結果)と同じで
これはResult[AnyContent]
からResult
に機能を戻すString
からわずか関数です。
f: =>
は、上記の答えでJoshによって説明された名前パラメータです。
'=>'は右結合です。 – missingfaktor
ありがとうございます。あなたの息子を見ながらスマートフォンでスマートフォンで回答を投稿することは悪い考えかもしれません;-) – Jan
@Jan:あなたの息子を見ている間、あなたはスタックオーバーフローしていますか? –