私はScalaの暗黙のパラメーターと暗黙の変換を理解していますが、これを今日初めて見ました:無名関数のパラメーターの前にある暗黙のキーワード:
Action { implicit request =>
Ok("Got request [" + request + "]")
}
暗黙のキーワードはここで何をしますか?
ユースケースとは何かについて詳しく説明しているリソースがWeb上にありますか?
ここには 2 つの異なる機能があります。
まず、request
実際にはメソッド呼び出しの引数ではありません。無名関数の引数です。無名関数自体がメソッド呼び出しの引数です。
次に、無名関数で暗黙の引数を宣言すると、val を暗黙的に「強制」する必要がなくなります。
Action { request =>
implicit val r = request
Ok("Got request [" + request + "]")
}
私はたまたまこれが Play フレームワークのコードであることを知っていますが、Action と Ok の署名が何であるかはわかりません。私はそれらがそのようなものであると推測します:
def Action(r:Request => Result):Unit
case class Ok(str:msg)(implicit r:Request)
繰り返しますが、これは説明のみを目的とした純粋な推測です。
いくつかのリソースが見つかりました:
https://issues.scala-lang.org/browse/SI-1492
https://stackoverflow.com/a/5015161/480674
2番目のリンクで「クロージャーの暗黙の引数」を検索します