Hello Worldを書いてみる
前々から気になっていたプログラミング言語Scalaで
HelloWorldを書いてみました。
HelloWorld.scala
object HelloWorld
{
def main(args: Array[String]): Unit =
{
System.out.println("Hello World")
}
}
環境構築は http://www.scala-lang.org/ からダウンロードした
scalaのアーカイブを解凍して、そのフォルダに環境変数SCALA_HOMEをセット。
そして、環境変数PATHにSCALA_HOME\binをセットするだけ。
早速、コンパイルしてみる。
> scalac HelloWorld.scala
HelloWorld.class と HelloWorld$.class が生成される。
$が付いているクラスは何なんだろうという疑問はあるが、ひとまず実行。
> scala HelloWorld
実行結果
Hello World
javaコマンドでも実行してみる。(実行結果は同じ)
> java -classpath %SCALA_HOME%\lib\scala-library.jar;. HelloWorld
HelloWorld.class と HelloWorld$.class の中身が
とても気になったのでデコンパイルしてみる。
HelloWorld.class
public final class HelloWorld { public static final int $tag() { return HelloWorld$.MODULE$.$tag(); } public static final void main(String args[]) { HelloWorld$.MODULE$.main(args); } }
HelloWorld$.class
import java.io.PrintStream; import scala.ScalaObject; public final class HelloWorld$ implements ScalaObject { public static final HelloWorld$ MODULE$ = this; public HelloWorld$() { } public void main(String args[]) { System.out.println("Hello World"); } public int $tag() { return scala.ScalaObject.class.$tag(this); } static { new HelloWorld$(); } }
$tagメソッドだとかtag$メソッドを除けば、
だいたいどんな処理なのかは理解できる。
うーん、tagメソッドの存在がとても気になるなぁ。
次回はtagについて調べてみよう。