O私はgithubの上thisコードで奇妙なタイプを発見:目的(=> A)=>
final class StaticRouteB[Page, O](private val f: (=> Action[Page]) => O) extends AnyVal {
def ~>(a: => Action[Page]): O = f(a)
}
f
のタイプ。どういう意味ですか ?私の推測では、それは名前引数による呼び出しを持つ関数であるということです。以前は見たことがないので、それが何であるか、あるいはこのことがどのように機能するかはわかりません。このタイプをさらに「標準」に変換する方法はありますか? (それは
(=> Action[Page]) => O)
タイプを使用しないように、私は、意味上のコードは?このタイプはいくつかの構文糖ですか?)私は
StaticRouteB
を作成するときに、私はf
としてAction[Page] => O
を渡すとどうなるか、特にだろうか?コンパイルエラーが発生しますか?ランタイムエラー ?どうして ?つまり、(=> ...)
の目的は何ですか?正しい種類の関数が渡されない場合や、f
のパラメータの評価方針を変更する場合は、コンパイルエラーを出すのですか?なぜ誰かがこのようなタイプをしたいのですか?どのような目的のために?
ありがとう、このタイプをもっと「標準的な」ものに変換する方法はありますか? – jhegedus
また、 'StaticRouteB'を作成するときに' Action [Page] => O'を 'f'として渡すとどうなりますか?コンパイルエラーが発生しますか?ランタイムエラー ? – jhegedus
これは、このタイプを書くための標準的でシンプルな方法です。必要に応じて、タイプエイリアスを使用できます。しかし、それは "フードの下に"何かを単純化しません。 – Tyth