Scalaのオブジェクトとクラスではapplyという名前のメソッドは、メソッド名なしで呼び出される特殊なメソッドであ〜る。
package ApplyDemo object Foo { def apply(n:Int) = printf("FooObject({0})\n", n) } class Foo { def apply(n:Int) = printf("FooClass({0})\n",n) } object Main extends Application { Foo(1) var foo = new Foo foo(2) foo(3) }
実行結果
FooObject(1) FooClass(2) FooClass(3)
上記で Foo(1) は Foo.apply(1) と同様の意味となる。Scalaでは、applyメソッドは、配列とコレクションのインデックスアクセスで使用されており、Javaでの[]を使用した配列アクセスのように使用される