私が知っていることに対する具体的な回答を見つけるのは難しいです。 Scalaでブロックがどのように動作するかを理解したいと思います。私はjava/rubyのバックグラウンドから来て、scalaはブロックを使用する全く異なる方法を持っているようです。Scalaブロックの理解
次のコードはPlay! Framework websiteです。 アクションが意味論的であることを理解したいと思います。それは、ブロックを受け入れるオブジェクトか関数か、あるいはどちらもそうではありません。
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
}
それが関数である場合は、おそらくそれは、(どのようにScalaは、背後のブロックの周囲を通過ん。その場合には)次のためにシンタックスシュガーです:
def index = Action({
Ok(views.html.index("Your new application is ready."))
})
それともそれは私が「いくつかのScalaの構文ですわからない。
Scalaのソースコードを参照すると、これが背後でどのように機能しているか理解できます。
返信いただきありがとうございます。だから、私が集めていることから、これはAction.apply()のための統語的な砂糖です。砂糖を取り除くと、声明全体はどのように見えますか? – b1nd
あなたが持っているステートメントは本質的に 'Action.apply(Ok.apply(views.html.index("あなたの新しいアプリケーションは準備ができています) "))'です。私が指定したURLの 'apply()'の定義を見ると、パラメータの型の前に矢印があることに気がつきます。これは、上で説明したように、それを「名前による」パラメータにマークするだけです。 (また、by-nameの構文が引数のない無名関数のように見えることは偶然ではありません) – yan
途中でドキュメントを再生するリンクが壊れています。時には、SOパーサーがドル記号を含むリンクを壊すことがあります。 –