29

私はScalaの暗黙のパラメーターと暗黙の変換を理解していますが、これを今日初めて見ました:無名関数のパラメーターの前にある暗黙のキーワード:

Action { implicit request =>
  Ok("Got request [" + request + "]")
}

暗黙のキーワードはここで何をしますか?

ユースケースとは何かについて詳しく説明しているリソースがWeb上にありますか?

4

3 に答える 3

23

ここには 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)

繰り返しますが、これは説明のみを目的とした純粋な推測です。

于 2012-10-02T07:28:44.113 に答える
6

いくつかのリソースが見つかりました:

https://issues.scala-lang.org/browse/SI-1492

https://stackoverflow.com/a/5015161/480674

2番目のリンクで「クロージャーの暗黙の引数」を検索します

于 2012-10-02T07:21:23.607 に答える