Scala の実行

作成日 : 2023-04-05
最終更新日 :

Scala の実行

Scala のプログラムを動かすには、いろいろな方法がある。

プログラムを書かずに対話式環境(REPL)で動かす

$ scala

プログラムを書いてインタプリタで動かす

$ scala filename.scala

コンパイルする

$ scalac filename.scala

$ scala filename

複数のファイルに分けてプログラムを動かす

複数のファイルに分けてプログラムを動かす方法がわからないので、ChatGPT に聞いてみた。

Scala で二つ以上のファイルに分けてプログラムを動かすにはどうしたらいいですか。

Scalaで複数のファイルに分割されたプログラムを実行するには、以下の手順を実行します。

  1. 複数のファイルを作成します。例えば、Main.scalaとUtil.scalaという2つのファイルを作成するとします。
  2. Main.scalaには、アプリケーションのエントリーポイントであるmainメソッドを定義します。 このファイルには、アプリケーションの主要なロジックが含まれます。
  3. Util.scalaには、アプリケーションで使用するユーティリティメソッドや関数など、Main.scalaで使用されるサポートコードを定義します。
  4. Main.scalaで、Util.scalaの定義をインポートする必要があります。以下のようにします。
    import package.name.Util
  5. 最後に、Main.scalaファイルの先頭に、アプリケーションで使用するすべてのファイルのパッケージ名を定義する必要があります。


例えば、Main.scalaとUtil.scalaがcom.example.myappパッケージに属している場合、Main.scalaの先頭には以下のように記述します。

package com.example.myapp

object Main {
  def main(args: Array[String]): Unit = {
    // アプリケーションのロジックを実装する
  }
}

Util.scalaにも同じパッケージ名を定義します。

これで、複数のファイルに分割されたScalaプログラムを実行できます。実行するには、Main.scalaファイルをコンパイルし、scalaコマンドで実行します。 コマンドラインから以下のように実行できます。

scalac Main.scala Util.scala
scala com.example.myapp.Main  

ここで、scalacはScalaコンパイラであり、scalaはScalaランタイムです。最後のコマンドは、com.example.myapp.Mainオブジェクトのmainメソッドを実行します。

なるほど。

文字化けを直す

PowerShell 上で sbt を起動すると、日本語の出力が文字化けすることがある。 これは、PowerShell のシステムコンソールの出力エンコーディング設定が Shift JIS (CP932) であるのに対し、 sbt の出力エンコーディングが UTF-8 であるためだ。コンソールの出力エンコーディング設定を次のようにして変更することで文字化けが解消される。

PS > [Console]::OutputEncoding = [Text.Encoding]::GetEncoding('utf-8')

参考

まりんきょ学問所コンピュータの部屋Scala しい新世界

MARUYAMA Satosi