まず、@pedrofurla がコメントで指摘しているように、カリー化はここに表示されているものとは何の関係もありません。2 つ目は、API ユーザーの観点からはLoggingAction
とAction
の動作は似ていますが、それらを区別することが重要です。
Action
クラスとコンパニオン オブジェクトの名前であるため、慣例により大文字が使用されます。が関数のように呼び出されているように見えるため、これは文脈からは明らかではないかもしれませんが、Action
実際に起こっていることはもっと微妙です。Action
コンパニオン オブジェクトはapply
メソッドを定義するため、
Action(arg)
の省略形として扱われます
Action.apply(arg)
つまり、関数呼び出しのように見えるものは、実際にはAction
オブジェクトのapply
メソッドの呼び出しにすぎません。メソッドが単一の関数を引数として取るこのような場合、中括弧を使用するのが一般的です:
Action apply { request =>
// ...
}
LoggingAction
一方、はメソッドです。大文字のメソッド名は慣習的ではないため、API のユーザーを混乱させる可能性があります。ただし、API 全体で一貫性が得られるため、このような場合には適切な場合があります。一般に、このような使用法の意図は、呼び出しが何かを実行するのではなく、何かを作成していること (ここではロギング アクション)を明確にすることです。大まかな目安として、大文字は名詞を表し、小文字は動詞を表します。