Hello,world!アプリを作成してみよう
まずは、基本のHello,worldです。リスト1のプログラムをHelloWorld.scalaというファイル名で作成しましょう。
object HelloWorld { *1 def main( arg:Array[String] ):Unit = { *2 val now = new java.util.Date *3 println( "Hello,world! %s" format now ) *4 } }
このHelloWorld.scalaをscalacコマンドでコンパイルし、scalaコマンドで実行すると、現在時刻と共に「Hello,world!」が出力されます。
$ scalac HelloWorld.scala $ scala HelloWorld Hello, world! Thu Apr 15 17:51:44 JST 2010
リスト1のHelloWorld.scalaでは、どのようなことをしているのでしょうか?
*1のobject HelloWorld{...}
は、HelloWorldオブジェクトの宣言です。objectキーワードを用いることで、いわゆるシングルトンオブジェクトを作成できます。objectで宣言されたクラスのインスタンスは、参照された際に自動的に生成されて、同一のJVM内でインスタンスが一つしか存在しないことが保証されます。
*2はmain関数の宣言です。Javaではpublic static void main(String[] args){...}
と書いていたアレです。
main関数はArray[String]型(いわゆる配列)を引数にとって、Unit型(voidに相当)を返す関数となります。
では、main関数の中身を見てみます。
*3の変数nowは、java.util.Date型のオブジェクトです。このように、ScalaではJavaのクラスを透過的に扱うことが可能です。
*3では、val 変数名 = 値
という形になっていて、変数の型が省略されていますね? Scalaでは、右辺の値から自動的に変数の型を推論できるため、変数を宣言する際に明示的に型を指定しなくてもよいようになっています。
*4は、now変数を用いて「Hello,World」を出力しています。