S-JIS[2010-08-23/2011-06-07] 変更履歴

Scalaを初めて触る(Scala入門)

ScalaのプログラムをWindowsで作ってみる。
(→Windowsへのインストール方法


Hello World

初めて作るプログラムと言えばHello Worldだよね。という訳で早速やってみた。

まずはテキストエディターでソースを書く。

C:\temp\scala\HelloWorld.scala:

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!

Javaとの比較

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()が入っている)で、
その中から「$」の付いているクラス(実際のプログラム内容が入っている)のインスタンスを呼び出しているようだ。

Scala目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま