2011年5月4日水曜日

scalaのコンストラクタ

scalaでコンストラクタの定義方法

コード

// 基本コンストラクタ
// 基本コンストラクタは、クラス宣言で定義する(クラスのパラメータとして定義する)
class Hoge(s: String, n: Int) {

  // 補助コンストラクタ(基本コンストラクタをオーバーロードする場合に定義する。)
  // 補助コンストラクタの最初のステップでは、必ず他のコンスとラクアを呼び出す必要がある。
  // この仕様に従うと、最後には必ず基本コンストラクタが呼び出される。
  def this(s: String) = this (s, 0)
  def this(n: Int) = this ("hoge", n)

  // コンストラクタの変数は、privateなインスタンス変数となる
  override def toString = s + ":" + n
}

object Hoge {

  def main(args: Array[String]) {
    // 基本コンストラクタに指定した値が出力される。
    println(new Hoge("string", 1))

    // 補助コンストラクタに指定した値と、補助コンストラクタで指定しているデフォルト値が出力される。
    println(new Hoge("hoge"))
    println(new Hoge(-1))
  }
}

実行結果

string:1
hoge:0
hoge:-1