- apply
- unapply
- unapplySeq
- update
の4つのメソッドは定義するときは普通のメソッドだけど、使うときは特別な使い方になる。というか、コンパイラがこれらのメソッドだけ特別扱いして、メソッド呼び出しでは無いような構文になる。
ただ、普通に呼ぶことも可能。
-
そのクラスまたはオブジェクトに()をつけて、そのオブジェクト自体が関数みたいな感じで使用できる。List()とかArray()とか
-
これを定義すると、パターンマッチが使える場所
(match式のcase、varやval定義の代入、関数リテラルでのcaseなど)
で、抽出子として利用できる
-
unapplyの可変長Version
-
配列の要素に代入するような構文で使えるようになる。(
これらのおかげで、ListやArrayがリテラルっぽく書けたり、パターンマッチのときに、複雑な条件でマッチさせることが可能になる。
これらは、普通に自分が作ったクラスで定義して使うのも、もちろん可能。
とりあえずこのぐらいかな。ほかに何かあったっけ?
ところで、eclipseとかで、このメソッドとか色変えてくれないかな・・・ほとんどキーワードみたいなものなんだし(-ω- )。。。
あとupdateってコップ本に載ってなかった気がする(・ε・`)
どちらにしろ、こういう特別ルールをまとめて書いてあるページが欲しいよなぁ。。。