apply unapply unapplySeq update

  • apply
  • unapply
  • unapplySeq
  • update

の4つのメソッドは定義するときは普通のメソッドだけど、使うときは特別な使い方になる。というか、コンパイラがこれらのメソッドだけ特別扱いして、メソッド呼び出しでは無いような構文になる。
ただ、普通に呼ぶことも可能。


apply

そのクラスまたはオブジェクトに()をつけて、そのオブジェクト自体が関数みたいな感じで使用できる。List()とかArray()とか


unapply

これを定義すると、パターンマッチが使える場所 (match式のcase、varやval定義の代入、関数リテラルでのcaseなど) で、抽出子として利用できる


unapplySeq

unapplyの可変長Version


update

配列の要素に代入するような構文で使えるようになる。(引数2つで定義した場合のみ?)

これらのおかげで、ListやArrayがリテラルっぽく書けたり、パターンマッチのときに、複雑な条件でマッチさせることが可能になる。
これらは、普通に自分が作ったクラスで定義して使うのも、もちろん可能。

とりあえずこのぐらいかな。ほかに何かあったっけ?

ところで、eclipseとかで、このメソッドとか色変えてくれないかな・・・ほとんどキーワードみたいなものなんだし(-ω- )。。。

あとupdateってコップ本に載ってなかった気がする(・ε・`)
どちらにしろ、こういう特別ルールをまとめて書いてあるページが欲しいよなぁ。。。