Scala/オブジェクト

Scala/オブジェクト

Scala には一点モノのクラスを作る専用の記法がある。それが(シングルトン)オブジェクト。

基本

object Hoge {
  def fuga() = {
    println("fuga")
  }
}

こう作って

Hoge.fuga()

こう使う。一点モノなので別に何もしなくても使える。

apply メソッド

オブジェクトに実装される apply メソッドは、メソッド名を省略しオブジェクト名で呼び出すことができる。これはクラスのインスタンスに直接括弧をつけて呼び出すことができるあの記法と同様。

コンパニオンオブジェクトでは主に同名クラスの Factory メソッドとして実装されることが多い

Array クラスは普通にやるならば new キーワードを使うが

var hoge:Array[Int] = new Array[Int](3)
hoge(0) = 1
hoge(1) = 2
hoge(2) = 3

オブジェクトの apply を使うと

var hoge:Array[Int] = Array(1, 2, 3)

このようになる。一見 class のコンストラクタを変な風に呼びだしているように見えるがこれは同名のコンパニオンオブジェクトの apply メソッドを呼び出している。

scala/object.txt · 最終更新: 2015-08-08 20:15 by ore