Scalaの配列で見るapplyとupdateメソッド

val testArray = new Array[String](2)

という配列を定義する。一つ目の要素に値を入れる場合は

testArray(0) = “Hello”

とするのが当然。だが実はこれは内部では

testArray.update(0, “Hello”)

に置き換わっている。つまり、括弧で囲まれた1個以上の引数を伴なう変数への代入がコンパイラによってupdateに置き換えられるってこと。

同様に括弧内に何らかの引数を収めてオブジェクトに適用するとapplyに置き換えられる。つまり配列の要素呼び出しである

testArray(0)

コンパイラによって

testArray.apply(0)

に変換されているということ。

つまり、Javaみたくプリミティブ型、それのラッパー型とか、配列とオブジェクトみたいなややこしいのは無い、全部オブジェクト。Rubyみたいだな。

ただ、内部的には可能な限りJavaのプリミティブ型とかネイティブ演算を使っている模様、ご苦労様です。