では、Scalaのプログラムの書き方について、ごくざっと頭に入れて行きましょう。まずは、Eclipseでプロジェクトを作成しておきましょう。
Scala IDEがインストールされていると、Scalaアプリケーションのプロジェクトを作ることができます。
1. 「ファイル」の「新規」内にある
「新規プロジェクト...」メニューを選び、テンプレート選択のダイアログで「Scalaウィザード」というフォルダにある
「Scalaプロジェクト」を選択します。
2. 続いての画面で、プロジェクト名を入力します。その他の項目はデフォルトのままでOKです。この後、ビルド設定に進みますが、これは何も設定することはないので、先に進まず、このまま「完了」ボタンを押してプロジェクトを作成してかまいません。また、終了時に、Scalaのパースペクティブに変更するか尋ねてきたら、切り替えてください。
3. プロジェクトを作ったら、そこにScalaのスクリプトファイルを作ります。これは「ファイル」の「新規」内にある
「Scala アプリケーション」メニューを選びます。現れたダイアログで、オブジェクト名として適当な名前を入力してください。(パッケージは、デフォルトパッケージのままでOKです)これでOKすればスクリプトファイルが作成されます。
作成されたプロジェクトには、
「src」フォルダと、JREおよびScalaのライブラリ設定が作成されています。そして「src」内に、手順3で作ったスクリプトファイルが用意されます。作成されているファイルは、
「オブジェクト名.scala」という名前になっています。Scalaのスクリプトは、このように
「.scala」という拡張子をつけるのが基本です。
では、中身を見てみましょう。作成されているスクリプトファイルには、このようなコードが書かれているはずです。
object オブジェクト名 {
def main(args: Array[String]) {
……ここに処理を書く……
}
}
これが、Scalaのアプリケーションの基本コードといってよいでしょう。これは、
「オブジェクトの定義」と、
「メソッドの定義」からなります。Javaでは、アプリケーションはクラスを定義し、その中に
mainメソッドを用意しましたね? あれとほとんど考え方は同じです。Scalaの場合は、オブジェクトを定義し、その中に
mainメソッドを定義しておくのです。
Scalaでは、「
オブジェクト」がプログラムの基本となります。「つまり、クラスじゃなくてオブジェクトって呼び方に変わってるのか」と思った人。そうじゃないんです。Scalaには、クラスもちゃんとあります。両者の違いについてはこの後で触れるとして、まずはオブジェクトの書き方を頭に入れておきましょう。――これらの定義の基本形はざっと以下のようになります。
●オブジェクトの定義object オブジェクト名 {
……ここにオブジェクトの内容を書く……
}
●メソッドの定義def メソッド名 ( 引数の指定 ) {
……ここにメソッドの内容を書く……
}
引数の定義の仕方などは、変数の宣言などがわからないといけませんから、今はごくざっと「こんな具合で書くんだ」ということだけ覚えておけばよいでしょう。とりあえず、アプリケーションの基本的な構造がわかれば今はOKです。
※クラスとオブジェクトの違いScalaでも、さまざまなプログラムは「
クラス」として定義します。「
class ○○」という形で記述し、Javaのクラスと似たような感覚で作れます。では、「オブジェクト」とはなにか? これは、「
シングルトンクラス」のことなのです。
「
object ~」の定義は、ただ1つだけしかインスタンスが存在しないオブジェクトを作成します。この
objectで定義したオブジェクトにアクセスすると、Scalaはそのオブジェクトを作成し、利用できるようにします。クラスとは違うため、同じオブジェクトをインスタンスのように次々と作ることはできません。そのオブジェクトただ1つだけしか存在しないわけです。これが「
クラス」と「
オブジェクト」の違いです。