scala コマンドで *.scala ファイルをスクリプトのように実行する場合の、
クラス定義の書き方について質問させてください。

// a.scala
object Main {
  def main(args: Array[String]) {
    println("hello")
  }
}

上の a.scala ファイルを scala コマンドで実行すると、main メソッドが呼び出されて
hello と表示されます。

$ scala a.scala
hello

次に a.scala にクラス Foo の定義を追加すると、今度は main メソッドが呼び出されなくなります。

// a.scala
class Foo {} // クラス定義を追加する

object Main {
  def main(args: Array[String]) {
    println("hello")
  }
}

scala コマンドで実行してみると、main メソッドが呼ばれなくなりました。

$ scala a.scala
$ # 何も表示されない

以下の方法ですと、main メソッドが実行されることは確認しています。

  • scalac コマンドでコンパイルしてから、scala Main を実行
  • クラス Foo の定義を、Main の中で定義する

質問なのですが、Main の外でクラス Foo を定義して、
scala a.scala で main メソッドを呼ぶ方法はないのでしょうか?