scala スクリプトと scala アプリケーションの違いは何ですか? 例を挙げてください
私が読んでいる本によると、スクリプトは常に結果式で終わる必要がありますが、アプリケーションは定義で終わります。残念ながら、明確な例は示されていません。
これを明確にするのを手伝ってください
scala スクリプトと scala アプリケーションの違いは何ですか? 例を挙げてください
私が読んでいる本によると、スクリプトは常に結果式で終わる必要がありますが、アプリケーションは定義で終わります。残念ながら、明確な例は示されていません。
これを明確にするのを手伝ってください
著者が意味するのは、通常のscalaファイルが機能する/役立つためにはクラスまたはオブジェクトを定義する必要があるということだと思います。トップレベルの式を使用することはできません(コンパイルされたファイルへのエントリポイントは事前にあるため) -定義済み)。例えば:
println("foo")
object Bar {
// Some code
}
このprintln
ステートメントは、ファイルのトップレベルでは無効.scala
です。これは、論理的な解釈はコンパイル時に実行することだけであり、実際には意味がないためです。
対照的に、Scalaスクリプトには、スクリプトの実行時に実行されるため、トップレベルの式を含めることができます。これも意味があります。一方、Scalaスクリプトファイルに定義のみが含まれている場合、スクリプトは定義をどう処理するかわからないため、それも役に立ちません。ただし、何らかの方法で定義を使用する場合は、次のように再度問題ありません。
object Foo {
def bar = "test"
}
println(Foo.bar)
最後のステートメントは前の定義を使用した式であり、定義自体ではないため、後者はscalaスクリプトとして有効です。
ええと、私はいつもこれが Scala スクリプトだと思っていました。
$ cat script
#!/usr/bin/scala
!#
println("Hello, World!")
シンプルで実行:
$ ./script
一方、アプリケーションは、ランタイム.class
を使用して明示的にコンパイルおよび実行する必要がありjava
ます。