apply メソッド!

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での[]を使用した配列アクセスのように使用される