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のプリミティブ型とかネイティブ演算を使っている模様、ご苦労様です。