22

scala プログラミングに Intellij-idea を使用しています (sbt プラグインを使用)。

scala クラス、scala スクリプト、scala ワークシートの違いを知りたいです。それぞれをいつ使用しますか?

簡単な例で説明していただけるととても助かります。

ありがとう

4

2 に答える 2

13

scala コードを実行するにはさまざまな方法があります。

最初にクラスを使用してプログラムを作成します。これはJavaの場合と同様です。オブジェクトを使用します。静的のようにインスタンス化せずにうまく機能するためです。SBTでコンパイルして実行するだけで、scala Interpreter REPLも使用できます

このオブジェクトを REPL で使用できます

scala>  object Hello {
     |   def main(args:Array[String]) {
     |     println("Hello, Scala !!")
     |   }
     | }
defined object Hello

scala> Hello.main(Array("onlyforwork"))
Hello, Scala !!

Activator/SBT を使用してコンパイルおよび実行する

> compile
[info] Compiling 1 Scala source to /home/anquegi/Dev/StackOverFlow/scalaStack/target/scala-2.11/classes...
[success] Total time: 2 s, completed 13/04/2015 11:29:42
> run
[warn] Multiple main classes detected.  Run 'show discoveredMainClasses' to see the list

Multiple main classes detected, select one to run:

 [1] org.example.Hello
 [2] org.example.ScheduledTaskScala
 [3] question1.Ques
 [4] scriptworksheet.Hello

Enter number: 4

[info] Running scriptworksheet.Hello 
Hello, Scala !!
[success] Total time: 19 s, completed 13/04/2015 11:30:04

2 つ目は、scala コードをスクリプトまたはファイル Hello.scala として追加する場合、scala コードを .scala 拡張子 (基本的には任意のファイル拡張子を使用しますが、.scala 拡張子が望ましい) でファイルに保存し、実行して、ファイルを提供することができます。 scala インタープリターへのパラメーターとしての拡張子付きの名前

/**
 * Created by anquegi on 13/04/15.
 */

println("Hello, Scala !!")

scala インタープリターを呼び出すと、このファイルが実行されます。オブジェクトやクラスをインスタンス化する必要はありません。シェル スクリプトのように実行するだけです。Intellij から直接実行することもできますが、システムに scala がインストールされたコンソールを使用します。

[anquegi@localhost scalaStack]$ scala src/main/scala/scriptworksheet/HelloScript.scala 
Hello, Scala !!

そして最後に、ワークシートは最も強力です。職場での生産性を高めるためにこれをお勧めします。これは、REPL のようなものを簡単にテストできるためです。スカラ表現を評価し、結果を表示します。

以下は、scala ワークシートに関する公式の github リポジトリ wiki からの抜粋です。

ワークシートは、保存時に評価される Scala ファイルであり、各式の結果はプログラムの右側の列に表示されます。ワークシートは、強力な REPL セッションのようなもので、完成、ハイパーリンク、入力時のインタラクティブなエラー、自動フォーマットなど、一流のエディター サポートを利用できます。

// We can define objects or classes and the worksheet
//will print the sesult of every expression
object Hello {
  def main(args:Array[String]) {
    println("Hello, Scala !!")
  }
}

println("Hello Scala")
val a = 4 + 5

結果

defined module Hello





Hello Scala
res0: Unit = ()
a: Int = 9

次に、Intellij でスクリプト用のワークシートとコンソールをクラスで使用していることを示すキャプチャ

作業環境のキャプチャ

于 2015-04-13T08:44:28.523 に答える