S-JIS[2010-08-23/2011-06-07] 変更履歴
ScalaのプログラムをWindowsで作ってみる。
(→Windowsへのインストール方法)
|
|
初めて作るプログラムと言えばHello Worldだよね。という訳で早速やってみた。
まずはテキストエディターでソースを書く。
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }
次にコマンドプロンプトを起動する。
> cd C:\temp\scala
C:\temp\scala> dir /b
HelloWorld.scala
コンパイルする。
C:\temp\scala> scalac HelloWorld.scala
C:\temp\scala> dir /b
HelloWorld$.class
HelloWorld.class
HelloWorld.scala
正常にコンパイルされると、何も表示されない^^;
ディレクトリーを見てみると、classファイルが2つ出来ている。
実行してみる。
C:\temp\scala> scala HelloWorld Hello, world!
おー、出来た!やったね!^^
他の人のウェブページを見ると、クラスパスにカレントディレクトリーを指定してやる必要があるようなことが書いてあったが、自分は無くても平気だった。Scala2.8だからかな?
C:\temp\scala> scala -cp . HelloWorld Hello, world!
HelloWorldをJavaと比較してみると…
項目 | Scala | Java | 感想 |
---|---|---|---|
ソース |
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } } |
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } |
Javaのstaticメソッドに当たるメソッドを定義する場合 (今回の場合はmainメソッドを定義したい)、 Scalaではobjectでシングルトンオブジェクトを生成する。[/2011-01-10] |
Scalaでは、メソッドの定義に「def」を使う。 →メソッドの定義方法 |
|||
publicの場合、Scalaでは何も書かない。[2011-06-07] →アクセス制御 |
|||
Javaでは 変数の宣言は「型 変数名」だが、 Scalaでは「変数名 : 型」となる。 |
|||
JavaではStringの配列は「String[] 」だが、Scalaでは「 Array[String] 」となる。→Scalaの配列 Javaでは括弧 [] は配列を意味するが、Scalaでは全般的に型を指定するときに [] を使うようだ。(Javaのジェネリクスは<>だが、Scalaのジェネリクスは [] ) |
|||
Scalaでは「def main(〜) = {」の様に「=」を付けるのが普通っぽい。 が、戻り値が無い場合は「=」を省略できる。 →メソッドの定義方法 |
|||
println()はPredefで定義されており、暗黙にインポートされる。[/2010-12-03] | |||
ソースファイル名 | HelloWorld.scala | HelloWorld.java | Javaでは、ソースファイル内のpublicなクラスのクラス名とソースファイル名を一致させる必要があった。 Scalaではソースファイル名は自由。 |
クラスファイル | HelloWorld$.class HelloWorld.class |
HelloWorld.class | ScalaはJavaVM上で動作するので、コンパイルするとJavaのクラスファイルが作られる。 Scalaでコンパイルすると、「$」の付いたクラスも作られる。 どうも、「$」の付いていない方がラッパークラス(public static void main()が入っている)で、 その中から「$」の付いているクラス(実際のプログラム内容が入っている)のインスタンスを呼び出しているようだ。 |