Scala のプログラムを動かすには、いろいろな方法がある。
$ scala
$ scala filename.scala
$ scalac filename.scala
$ scala filename
複数のファイルに分けてプログラムを動かす方法がわからないので、ChatGPT に聞いてみた。
Scala で二つ以上のファイルに分けてプログラムを動かすにはどうしたらいいですか。
Scalaで複数のファイルに分割されたプログラムを実行するには、以下の手順を実行します。
- 複数のファイルを作成します。例えば、Main.scalaとUtil.scalaという2つのファイルを作成するとします。
- Main.scalaには、アプリケーションのエントリーポイントであるmainメソッドを定義します。 このファイルには、アプリケーションの主要なロジックが含まれます。
- Util.scalaには、アプリケーションで使用するユーティリティメソッドや関数など、Main.scalaで使用されるサポートコードを定義します。
- Main.scalaで、Util.scalaの定義をインポートする必要があります。以下のようにします。
import package.name.Util- 最後に、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')
参考